¿Qué es “{0}” en C?

¿Qué hace char buf[MAXDATASIZE] = { 0 }; ¿ {0} significa?

Intenté imprimirlo pero no imprimió nada.

 #include  int main(void) { char buf[100] = { 0 }; printf("%s",buf); return 0; } 

Esta es solo una lista de inicialización para una matriz. Así que es muy similar a la syntax normal:

 char buf[5] = { 1, 2, 3, 4, 5 }; 

Sin embargo, el estándar C indica que si no proporciona suficientes elementos en su lista de inicializadores, se inicializarán por defecto el rest de ellos. Así que en tu código, todos los elementos de buf terminarán inicializados a 0 .

printf no muestra nada porque buf es efectivamente una cadena de longitud cero.

Estás asignando una matriz al búfer.

En el caso particular de la cadena, generalmente, el carácter cuyo valor ASCII es 0 termina la cadena.

Por ejemplo, si quisieras poner una cadena que diga ‘Hola mundo’ dentro de la cadena que podrías haber hecho

 char buf[100] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', 0}; 

o

 char buf[100] = "Hello world"; 

De todos modos, su código no imprime nada porque está intentando imprimir una cadena con longitud cero, que es una cadena vacía.