2013-04-21 72 views
10

我正在使用Arduino。如何在C中發送ctrl + z

我想在C的字符串我試圖截斷^Z但沒有奏效後,發送按Ctrl +ž。那麼該怎麼做?

+1

焦炭ctrlz = 0x1A的; – yeyo 2013-04-21 15:46:37

+1

http://en.wikipedia.org/wiki/ASCII#ASCII_control_code_chart以供進一步參考。 – TNW 2013-04-21 15:47:28

+0

* nix,'man ascii' – yeyo 2013-04-21 15:48:03

回答

12

Ctrl + Z = 26 = '\032' = '\x1A'。任何一個反斜槓轉義序列都可以寫成一個字符串文字(但是要注意十六進制轉義,就好像它後面跟着一個數字或AF或af,這也將被計算爲十六進制轉義的一部分,這不是什麼你要)。但是,如果您在Windows機器上模擬終端輸入(因此您希望字符被視爲EOF指示),則需要再次思考。這不是它的工作原理。

它可能會也可能不會做你想要的Arduino,或者;部分取決於你認爲它將要做什麼。它還取決於輸入字符串是否會被視爲來自終端。

1

我假設「截斷」你實際上意味着追加。

在ASCII,CTRL + ž爲代碼點26,所以你可以簡單地添加,作爲一個字符,像這樣:

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

sprintf方法只一個的方式這樣做,但他們都基本上取決於你把最後一個單字節值爲26.

+1

如簡單地使用轉義序列\ xFF其中FF是代碼的兩個十六進制數字。所以:「這是我的消息\ x1A」 – matt 2013-05-28 08:07:25

3

我砍死這件事,因爲我需要類似

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

希望它可以幫助8)