fgetc,getc вызывает сбой программы при чтении из текстового файла
В чем дело? Я уверен, что мой синтаксис правильный, так как он не имеет предупреждений. Плюс это не пройдет getc(document);
Я старался fgetc(document);
тот же результат. Что я не получаю здесь? (Я использовал printf("$");
чтобы увидеть, где он падает
char temp[51];
int cntr = 0,listcntr = 0,buffer;
FILE *document;
contact list[MAXCONTACTS];
document = fopen("addressbook.txt","r");
do
{
for(cntr = 0;cntr < 51; cntr++)
temp[cntr] = '\0';
cntr = 0;
do
{
buffer = getc(document);
printf("$");
if(buffer != '\t')
temp[cntr] = buffer;
++cntr;
}while(buffer != '\t'&& buffer != EOF);
list[listcntr].name = temp;
1 ответ
Решение
Хорошо, я немного изменил ваш код и добавил пару проверок, возможно, этого будет достаточно.
char temp[51];
int listcntr = 0,buffer;
contact list[MAXCONTACTS];
FILE *document = fopen("addressbook.txt","r");
if (NULL == document){
//exit here
}
for(int i = 0;i < 51; i++){
temp[i] = '\0';
}
int cntr = 0;
for (int cntr=0; cntr < 51 && !feof(document); cntr++){
buffer = getc(document);
if (buffer == '\t'){
break;
}
temp[cntr] = buffer;
}
if(listcntr < MAXCONTACTS){
// you should probably copy temp here
list[listcntr].name = temp;
}