c - C中的数组赋值

标签 c arrays character-arrays

我有一些设备需要通过 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/

相关文章:

c++ - 如何使用 fprintf 打印头文件中定义的结构成员值?

PHP 将一个数组的索引分配给另一个数组

c - 使用 malloc 创建二维和一维数组时出错

arrays - Swift - 更新多维 NSMutableDictionary 的值

C++ 将字符数组转换为大写(无 MFC)

perl - 在 Perl 中使用引用指向滑动窗口数组

c++ - 使用 c++/vC++ 将结构数组和二维数组传递给函数

使用C语言将1970年1月1日到现在的秒数转换

c - 了解 void 指针和 typedef 指针函数

c - 如何让程序这样运行?