что такое "{0}" в C? - PullRequest
       1

что такое "{0}" в C?

3 голосов
/ 15 августа 2011

Что означает char buf[MAXDATASIZE] = { 0 }; s {0}?

пытался распечатать, но ничего не печаталось.

#include <stdio.h>

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

Ответы [ 2 ]

12 голосов
/ 15 августа 2011

Это просто список инициализатора для массива. Так что это очень похоже на обычный синтаксис:

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

Однако стандарт C утверждает, что если вы не предоставите достаточно элементов в списке инициализаторов, он по умолчанию инициализирует остальные из них. Таким образом, в вашем коде все элементы buf будут в конечном итоге инициализированы до 0.

printf ничего не отображает, потому что buf - это строка нулевой длины.

2 голосов
/ 15 августа 2011

Вы назначаете массив для буфера.

В конкретном случае строки обычно символ, значение ASCII которого равно 0, оканчивает строку.

Например, если вы хотите поместить строку с надписью «Hello world» внутри строки, которую вы могли бы сделать

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

или

char buf[100] = "Hello world";

В любом случае, ваш код ничего не печатает, потому что вы пытаетесь напечатать строку нулевой длины, то есть пустую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...