web-dev-qa-db-ja.com

Cでctrl + zを送信する方法

私はArduinoと協力しています。

送りたい Ctrl+z Cの文字列の後。^Zを切り捨ててみましたが、うまくいきませんでした。それを行う方法は?

11
omerjerk

Ctrl+Z = 26 = '\032' = '\x1A'。バックスラッシュエスケープシーケンスはどちらも文字列リテラルで記述できます(ただし、16進エスケープの後に数字またはAFまたはafが続くかのように、16進エスケープに注意してください。16進エスケープも16進エスケープの一部としてカウントされます。あなたが欲しい)。

ただし、Windowsマシンで端末入力をシミュレートしている場合(つまり、文字をEOF表示として扱いたい場合)は、もう一度考える必要があります。それが機能する方法ではありません。

それはまた、Arduinoであなたが望むことをするかもしれませんし、しないかもしれません。一部には、それが何をしようとしているのかによって異なります。また、入力文字列が端末からのものであるかのように処理されるかどうかにも依存します。

13

私は同様のものが必要だったので、これをハッキングしました

#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
Neil McGill

私はあなたが実際に追記することを意味する「切り捨て」によって仮定します。

ASCIIでは、 CTRL+z コードポイント26なので、次のように単純に文字として追加できます。

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

sprintfメソッドはこれを行う方法のoneのみですが、すべて基本的に値26の最後に1バイトを置くことに依存しています。

0
paxdiablo