Почему этот код компилируется, но не работает

Почему этот код компилируется, но не работает?

int main() {
     char *s;

     scanf("%15s", s);
     puts(s);
 } 

3 ответа

Так как s является неинициализированным указателем, вы не можете хранить данные там (так как там "там нет").

Пытаться:

char s[32];

вместо этого это дает вам место 32 символов, в которое scanf() могу написать.

Вы должны предоставить память для scanf(...) char *s это только указатель на какую-то память, но не саму память. Вы также можете malloc(...) память и есть s указать на него или разместить его локально в стеке char s[16]

Для начала предоставьте надлежащий буфер scanf вызов. Например, вместо char *s это просто неинициализированный указатель, попробуйте char s[128],

Другие вопросы по тегам