У меня есть код, который, как я думал, был скомпилирован в прошлом и успешно, но теперь я сталкиваюсь с segfault, и я не понимаю, почему.C код segfault при использовании fseek
FILE *numbers = fopen("./e13.txt", "r");
//seeking the end of the file to get the correct size for the string
//I will store
fseek(numbers, 0, SEEK_END);
long fsize = ftell(numbers);
fseek(numbers, 0, SEEK_SET);
//Allocating memory to the string
char *string = malloc(fsize + 1);
Я пытаюсь прочитать файл в память, так что я получаю правильный размер его и пытаюсь malloc
, что объем памяти. Я думаю, что это происходит в функции fseek, но я не понимаю, почему ...
Может быть, это время вы начали проверку на наличие ошибок. –
Как бы я это сделал? – deltaskelta
Шаг 1. Прочтите каждую страницу, чтобы узнать, какие значения она возвращает при ошибке. Например, страница ['fopen' man] (http://linux.die.net/man/3/fopen). Шаг 2. Проверьте эти ошибки. например 'if (! numbers) {perror (" fopen failed "); выход (1); } ' – kaylum