У меня есть файл, который я хочу прочитать и сохранить данные в массиве символов, который я динамически выделяю для памяти после каждого символа. Я хочу динамически распределять память именно так, как требуется. Вот что у меня есть:Чтение и хранение динамически для массива char
FILE *fp;
char *data;
int c=0;
fp=fopen("home/bob/Downloads/filename", "r");
data=malloc(sizeof(char));
do{
data[c]=fgetc(fp);
printf("data : %c\n", data[c]);
c++;
data=realloc(data, sizeof(char)+c);
} while(data[c]!=EOF);
У меня возникает ошибка сегментации.
Это не имеет смысла, 'EOF' является * не * значением' char', ему нужно 'int'. Посмотрите на [прототип для 'fgetc()'] (http://linux.die.net/man/3/fgetc). – unwind
, но как же использование переменной int хранит данные в файле? некоторый int variable = fgetc (указатель); возвращает данные и сохраняет их в переменной int? – user2644819
Значение из файла - это char, присвоенный int или EOF. Поэтому вам нужно прочитать его в int, а затем проверить, не является ли это EOF, а затем отбросить его на char. – zoska