Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > sprintf и сегфолты


Автор: virusman 5.6.2005, 12:07
Почему sprintf при работе с char* часто выдает Segmentation Fault?
Например, последняя строчка этого фрагмента у меня убивает программу:
Код

char *dirpath;
char *value="virusman";
sprintf(dirpath, "E:/msys/1.0/home/nwn/servervault/%s", value);

Автор: Mayk 5.6.2005, 12:24
dirpath указывает в никуда.
Делай так:
Код

char dirpath[1024];
char* value="virusman";
sprintf(dirpath,"E:/nwn/vault/%s", value);


А еше лучше вот так, чтоб переполнения не было
Код

char dirpath[1024];
char* value="virusman";
snprintf(dirpath, sizeof(dirpath), "E:/nwn/vault/%s", value);

Автор: virusman 5.6.2005, 13:22
Mayk
Так и знал. smile Спасибо. smile

Автор: virusman 5.6.2005, 13:49
А память вот это вот дело
Код

char dirpath[1024];
не отъедает?

Автор: Mayk 5.6.2005, 14:10
При выходе из функции она сама освободится и довольно быстро.
Ну можно malloc/free использовать.
В любом случае должен быть участок памяти, куда s[n]printf поместит данные.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)