How to send ctrl+z in C

前端 未结 3 441
渐次进展
渐次进展 2020-12-18 23:50

I\'m working with Arduino.

I want to send Ctrl+z after a string in C. I tried truncating ^Z but that didn\'t work. So how to do th

相关标签:
3条回答
  • 2020-12-19 00:14

    I hacked this up as I needed similar

    #include <stdio.h>
    #define CTRL(x) (#x[0]-'a'+1)
    int main (void)
    {
        printf("hello");
        printf("%c", CTRL(n));
        printf("%c", CTRL(z));
    }
    

    hope it helps 8)

    0 讨论(0)
  • 2020-12-19 00:19

    Ctrl+Z = 26 = '\032' = '\x1A'. Either of the backslash escape sequences can be written in a string literal (but be careful with the hex escape as if it is followed by a digit or A-F or a-f, that will also be counted as part of the hex escape, which is not what you want).

    However, if you are simulating terminal input on a Windows machine (so you want the character to be treated as an EOF indication), you need to think again. That isn't how it works.

    It may or may not do what you want with Arduino, either; in part, it depends on what you think it is going to do. It also depends on whether the input string will be treated as if it came from a terminal.

    0 讨论(0)
  • 2020-12-19 00:38

    I assume by "truncating" you actually meant appending.

    In ASCII, CTRL+z is code point 26 so you can simply append that as a character, something like:

    #define CTRL_Z 26
    char buffer[100];
    sprintf (buffer, "This is my message%c", CTRL_Z);
    

    The sprintf method is only one of the ways of doing this but they all basically depend on you putting a single byte at the end with the value 26.

    0 讨论(0)
提交回复
热议问题