char buf[MAXDATASIZE] = { 0 };
{0}
的含义是什么?
尝试将其打印出来,但它什么都没打印出来。
#include <stdio.h>
int main(void)
{
char buf[100] = { 0 };
printf("%s",buf);
return 0;
}
答案 0 :(得分:12)
这只是数组的初始化列表。所以它非常像普通的语法:
char buf[5] = { 1, 2, 3, 4, 5 };
但是,C标准规定,如果在初始化列表中没有提供足够的元素,它将默认初始化其余元素。因此,在您的代码中,buf
的所有元素最终都会初始化为0
。
printf
不显示任何内容,因为buf
实际上是零长度字符串。
答案 1 :(得分:2)
您正在为缓冲区分配一个数组。
在字符串的特殊情况下,通常,ASCII值为0的字符会终止字符串。
例如,如果你想在字符串中放入一个读取'Hello world'的字符串,你可以做到
char buf[100] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', 0};
或
char buf[100] = "Hello world";
无论如何,你的代码什么都不打印,因为你试图打印一个长度为零的字符串,这是一个空字符串。