LINUX.ORG.RU

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


0

0

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

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

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

anonymous

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

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

anonymous ()
Ответ на: Re: ошибка сегментирования от anonymous

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

ты забыл выделить память. char* c; //здесь c указывает куда угодно, и scanf пишет куда-угодно, вот и ругается система.

help_us ()

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

> но в turbo c, такой ошибки невозникает

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

#define N 10
char* c = (char *)malloc(sizeof(char) * N);
scanf("%s", c);

kondor ★★★ ()

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

s/char *c/char *c[256/ к примеру.

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

marsijanin ★★ ()

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

нуб детектед

dilmah ★★★★★ ()

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

> scanf("%s",c);

За такое -- расстрел на месте.

anonymous ()
Ответ на: Re: ошибка сегментирования от anonymous

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

> За такое -- расстрел на месте.
Я все таки учусь... почему вместо того что бы помочь, многи начинают издеваться?

anonymous ()
Ответ на: Re: ошибка сегментирования от anonymous

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

> За такое -- расстрел на месте.
Я все таки учусь... почему вместо того что бы помочь, многи начинают издеваться?

anonymous ()
Ответ на: Re: ошибка сегментирования от anonymous

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

Это в большей степени относится к твоему первоисточнику/советчикам, провоцирующим написание заведомо небезопасного кода. Не принимай на свой счет.

anonymous ()
Ответ на: Re: ошибка сегментирования от kondor

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

Не правильней ли будет тут:
сalloc(N, sizeof(char));
И вообще есть ли разница между calloc и malloc, если делать
приведение типа в malloc или просто calloc для удобочитаемости?

borodun ()
Ответ на: Re: ошибка сегментирования от alex_custov

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

Нет такой функции в стандарте.
так надо делать:
char buf[256];
scanf("%255s", buf);

Reset ★★★★★ ()
Ответ на: Re: ошибка сегментирования от alex_custov

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

На самом деле такая функция есть, но в msvc. Недавно по этому поводу в конторе с виндузятниками боролись, которые написали чего-то несобирающееся :)

Reset ★★★★★ ()

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

>scanf("%s",c);

scanf("%s",&c);

Об этом вроде в K&R говорится.

Yoda_The_Master ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.