Как отправить ctrl + z в C

Я работаю с Arduino.

Я хочу отправить Ctrl + z после строки в C. Я пробовал обрезать ^Z, но это не сработало. Итак, как это сделать?

Ответ 1

Ctrl + Z= 26 = '\032'= '\x1A'. Любая из escape-последовательностей обратной косой черты может быть записана в строковый литерал (но будьте осторожны с шестнадцатеричным escape-кодом, как если бы за ним следовала цифра или AF или af, что также будет считаться частью перехода hex, что не является чем-то вы хотите).

Однако, если вы имитируете вход терминала на компьютере Windows (чтобы вы хотели, чтобы символ обрабатывался как индикация EOF), вам нужно подумать еще раз. Это не так, как это работает.

Он может или не может делать то, что вы хотите, с Arduino; отчасти это зависит от того, что вы думаете, что это будет делать. Это также зависит от того, будет ли входная строка обрабатываться так, как если бы она исходила от терминала.

Ответ 2

Я взломал это, так как мне был нужен подобный

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

надеюсь, что это поможет 8)

Ответ 3

Я предполагаю, что вы "усекаетесь", что на самом деле означало добавление.

В ASCII CTRL + z указан код 26, поэтому вы можете просто добавить это как символ, например:

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

Метод sprintf - это только один из способов сделать это, но все они в основном зависят от того, что вы поместили один байт в конце со значением 26.