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;
}
У меня есть еще один вопрос. что, когда я использую fgets, его также сохраняет новый символ строки. но я не хочу сохранять новую строку, а только строку. как я могу? –
Пройдите через строку и замените '' \ n'' на '' \ 0''. – timrau