LINUX.ORG.RU

ошибка сегментирования


0

0
начал изучать СИ, столкнулся с ошибкой сегментирования в gcc

... char *c; scanf("%s",c); // на этом месте возникает ошибка printf("%s",c); ...

будете пинать, но в turbo c, такой ошибки невозникает

anonymous
Ответ на: комментарий от anonymous
ты забыл выделить память. char* c; //здесь c указывает куда угодно, и scanf пишет куда-угодно, вот и ругается система.
help_us
()
> но в turbo c, такой ошибки невозникает

Windows сразу выдает BSOD? :D

#define N 10
char* c = (char *)malloc(sizeof(char) * N);
scanf("%s", c);
kondor ★★★
()
s/char *c/char *c[256/ к примеру.

Иначе происходит обращение по не инициализированному указателю.

marsijanin ★★
()
Ответ на: комментарий от anonymous
free(c) только не забудь сделать. И прочитать K&R заодно.
kondor ★★★
()
Ответ на: комментарий от anonymous
> За такое -- расстрел на месте.
Я все таки учусь... почему вместо того что бы помочь, многи начинают издеваться?
anonymous
()
Ответ на: комментарий от anonymous
> За такое -- расстрел на месте.
Я все таки учусь... почему вместо того что бы помочь, многи начинают издеваться?
anonymous
()
Ответ на: комментарий от anonymous
Это в большей степени относится к твоему первоисточнику/советчикам, провоцирующим написание заведомо небезопасного кода. Не принимай на свой счет.
anonymous
()
Ответ на: комментарий от kondor
Не правильней ли будет тут:
сalloc(N, sizeof(char));
И вообще есть ли разница между calloc и malloc, если делать
приведение типа в malloc или просто calloc для удобочитаемости?
borodun
()
Ответ на: комментарий от borodun
calloc отличается от malloc только тем, что память нулями заполняет
Reset ★★★★★
()
Ответ на: комментарий от alex_custov
На самом деле такая функция есть, но в msvc. Недавно по этому поводу в конторе с виндузятниками боролись, которые написали чего-то несобирающееся :)
Reset ★★★★★
()
Ответ на: комментарий от Yoda_The_Master
при работе со строками аперсанд неставится... вроде бы
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.