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;
}
Другие вопросы по тегам