Почему этот код компилируется, но не работает
Почему этот код компилируется, но не работает?
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]
,