2013-12-12 2 views
1

i hav homework form univ. это использование файла IO.C, как использовать fgets и fscanf вместе

есть как этот TXT файл:

Brian 
s213551 50 70 70 50 
Alex Fernandes 
s210011 70 81 50 89 
Young Lee 
s211213 60 80 60 90 
... and more 

Я должен прочитать этот файл и сохранить вар в структуры. и проф. сказал мне. Мне нужно использовать fgets и fscanf вместе. , если я использую только fscanf, он не работает красиво, потому что у «Alex Fernandes» есть место в нем.

но даже если я использую fgets и fscanf вместе, его не работает. , поэтому мне нужна помощь u.

это мой источник:

#include <stdio.h> 
#include <stdlib.h> 

typedef struct sMember{ 
     char name[10]; 
     char id[10]; 
     int score[4]; 
     double avg; 
     char grade; 
}MEM; 

int main(int argc, char *argv[]) 
{ 
    MEM member[50]; 
    FILE *f; 
    char fileName[10]; 
    char s[512]; 
    int i; 
    printf("File Name : "); 
    scanf("%s", fileName); 
    fflush(stdin); 

    i=0; 
    if((f = fopen(fileName, "r")) != NULL) 
    { 

//  while(!feof(f)) 
      while(fgets(member[i].name, sizeof(member[i].name), f) != 0) 
     { 
     fscanf(f, "%s %d %d %d %d", member[i].id, &member[i].score[0], &member[i].score[1], &member[i].score[2], &member[i].score[3]); 

     printf("%s %s %d %d %d %d\n", member[i].name, member[i].id, member[i].score[0], member[i].score[1], member[i].score[2], member[i].score[3]); 
     //printf("t: %s\n", member[i].name); 
     i++;    
     } 
    } 
    else 
    { 
     printf("File is Not Exist.\n"); 
    } 


    fclose(f); 
    system("PAUSE"); 
    return 0; 
} 

ответ

2

Просто добавьте пробел в конце fscanf() параметра потреблять символ новой строки.

fscanf(f, "%s %d %d %d %d ", member[i].id, &member[i].score[0], &member[i].score[1], &member[i].score[2], &member[i].score[3]); 
+0

У меня есть еще один вопрос. что, когда я использую fgets, его также сохраняет новый символ строки. но я не хочу сохранять новую строку, а только строку. как я могу? –

+0

Пройдите через строку и замените '' \ n'' на '' \ 0''. – timrau

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