2015-02-08 4 views
0
struct node 
{ 
char item[200]; 
struct node* next; 
}; 

FILE* unionMethod(char f1name[50], char f2name[50]) 
{ 
    FILE* f1; 
    FILE* f2; 

    f1=fopen(f1name,"r"); 
    f2=fopen(f2name,"r"); 
    char line[200]; 
    struct node *head1=NULL; 
    struct node *head2=NULL; 

    while(!feof(f1)) 
    { 
     fgets(line, 200, f1); 
     struct node *cur=head1->next; 
     if(head1==NULL) 
     { 
      head1 = (struct node *) malloc(sizeof(struct node)); 
      fgets(line,200,f1); 
      strcpy(head1->item, line); 
      head1->next=NULL; 
     } 
     else 
     { 
      cur = (struct node *) malloc(sizeof(struct node)); 
      fgets(line,200,f1); 
      strcpy(cur->item, line); 
      cur->next=NULL; 
     } 
    } 

    fclose(f1); 
} 
int main() 
{ 
    unionMethod("inputfile1.txt","inputfile2.txt"); 
    return 0; 
} 

То, что я в основном пытаюсь сделать, это получить строки из файла и поместить их в связанный список. Однако, когда выполнение выполняется, пока программа программы останавливается, из-за функции «feof». Я не мог понять проблему с этим.Ошибка Feof в C

Благодарим за помощь.

+1

http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong – Mat

ответ

0

Это очень часто question, просто изменить

while (!feof(f1)) 

в

while (fgets(line, 200, f1)) 

причиной является то, что EOF маркер устанавливается после fgets() попытки чтения за концом файла, так вам понадобится одна дополнительная итерация для ее установки.

 Смежные вопросы

  • Нет связанных вопросов^_^