Вы должны проверить результат возврата от fopen()
.
Я предполагаю, что вы получаете ошибку segfault в вызове fread()
, поскольку файл данных не существует,или не удалось открыть, и вы пытаетесь работать со структурой NULL FILE.
См. следующий безопасный код:
#include <stdio.h>
#include <stdint.h>
#define SIZE_BUFFER 32
int main()
{
char *binary = "data.txt";
FILE *fp = NULL;
char buffer[SIZE_BUFFER];
// Open read-only
fp = fopen(binary, "rb");
// Read SIZE_BUFFER bytes into buffer
if( fp )
{
printf("Elements read %ld\n", fread (buffer, sizeof(char), SIZE_BUFFER, fp));
fclose(fp);
}
else
{
// Use perror() here to show a text description of what failed and why
perror("Unable to open file: ");
}
return 0;
}
Когда я выполняю этот код, он не падаети напечатает количество прочитанных элементов, если файл открыт, или напечатает «Невозможно открыть файл», если файл не может быть открыт.
Как уже упоминалось в комментариях, вы также должны закрыть выходящий файл.,Вы можете сделать следующее:
FILE *fp = fopen(.....);
Вместо того, чтобы объявлять и присваивать два отдельных шага.