我有一些设备需要通过 ASCII 命令连接。 我声明了一些字符数组,每个命令状态我用请求命令分配它,然后通过 UART 发送它。
除了按如下方式分配数组之外,我还有其他选择吗?(例如)
Buf[0]='M';
Buf[1]='O';
Buf[2]='D';
Buf[3]='E';
Buf[4]='L';
Buf[5]=' ';
.
.
.
我的想法是为每个命令声明 char 数组,并且我将把请求的命令数组复制到将发送到 UART 的每个状态。
最佳答案
您没有指定缓冲区是否以 '\0'
终止,因此无法给出特定答案。
有几个选项:
char Buf[]="MODEL ";
这使其以 '\0'
结尾。如果您不希望 '\0'
终止,您可以这样做:
char Buf[] = {'M','O','D','E','L',' '};
如果您想保留数组未初始化并稍后填充它,您可以这样做:
char Buf[SIZE];
strcpy(Buf,"MODEL ");
...但是如果您这样做,请确保 SIZE
足够大,否则您会遇到问题。
还可以这样做:
char Buf[SIZE];
memcpy(Buf,"MODEL ", 6); // or memcpy(Buf, "MODEL ", sizeof("MODEL ")-1);
如果您不希望'\0'
终止。如果您这样做,还请确保 SIZE
足够大。如果您在评论中使用变体,请考虑同时使用 #define THE_STRING "MODEL "
,然后使用 THE_STRING
而不是 "MODEL "
避免重复字符串文字两次。
关于c - C中的数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29275102/