2013-04-21 84 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)