То, что вы говорите, не может быть правдой: sizeof_data
- 1024 и буфер тоже, поэтому проблем нет. Поэтому проблема заключается в коде, который вы нам не показываете. Две возможности:
sizeof_data
больше, чем буфер, и вы перезаписывать стек (или другие данные);
Вы ожидаете, что прочитаете строку и не завершите ее с помощью `\ 0 ', а затем вы ее распечатаете, вызывая f/s/printf, чтобы вызвать segfault.
Попробуйте этот код:
char charString[1024];
size_t n;
if ((n=fread(charString, 1, (sizeof_data<1024?sizeof_data:1023), filePointer))==0)
return false;
CharString[n]='\0'; // terminate
printf("%s\n",charString); // safe to print now
return true;
Обратите внимание, что мы хотим, чтобы читать символы, так что размер пункт 1, и мы хотим, чтобы прочитать до 1023 из них, так что рассчитывать составляет не более 1024.
Ваша проблема в выделенном размере 'charString' скорее всего. –
Изменен, чтобы исправить код. – Gaurav
Что такое 'else true'? измените его на 'else return true'. –