13

我正在与 Arduino 合作。

我想在 C 中的一个字符串之后发送Ctrl+ 。我尝试截断但没有奏效。那么该怎么做呢?z^Z

4

4 回答 4

18

Ctrl+ Z= 26 = '\032'= '\x1A'。任何一个反斜杠转义序列都可以写成字符串文字(但要小心十六进制转义,就好像它后面跟着一个数字或 AF 或 af,这也将被视为十六进制转义的一部分,这不是你要)。

但是,如果您在 Windows 机器上模拟终端输入(因此您希望将字符视为 EOF 指示),则需要重新考虑。这不是它的工作原理。

它可能会也可能不会用 Arduino 做你想做的事;在某种程度上,这取决于你认为它会做什么。它还取决于输入字符串是否会被视为来自终端。

于 2013-05-28T08:05:40.313 回答
4

我破解了这个,因为我需要类似的

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

希望对你有帮助 8)

于 2015-11-18T16:48:41.257 回答
0

我假设“截断”实际上意味着附加。

在 ASCII 中,CTRL+z是代码点 26,因此您可以简单地将其附加为字符,例如:

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

sprintf方法只是执行此操作的方法之一,但它们基本上都取决于您在末尾放置一个值为 26 的单个字节。

于 2013-05-28T08:00:13.230 回答
0

以下应该有效:无论您要\032在最后写什么附加例如:

strcpy(InputCommand,"hi\032");
GetSerialData(InputCommand,......); //this is my own function which uses serialPuts() 
于 2021-08-12T14:59:34.310 回答