#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct record
{
char id[10];
char firstName[20];
char lastName[20];
char score[5];
};
int main()
{
FILE *fileptr;
fileptr=fopen("students.txt","r");
struct record *pinakas;
pinakas=(struct record *)malloc(17*sizeof(struct record));
fflush(stdin);
int i,j;
for(i=0; i<16; i++)
{
fgets(pinakas+i,70,fileptr);
}
for(i=0; i<16; i++)
{
puts(pinakas+i);
}
fclose(fileptr);
free(pinakas);
return 0;
}
,假设我有以下.txt文件:
您在这里看到的是我读取了文件并将每一行存储到结构对象“ pinakas”中。问题是我不知道如何将每个(pinakas + i)按空间划分,并将每个字符串存储为id,firstName,lastName,score ...任何想法吗?
答案 0 :(得分:0)
您可以尝试使用fscanf作为下面的代码,它是用于扫描文件的功能。 “%[^]”表示扫描所有内容,直到找到''。 “%[^ \ n]”表示扫描所有内容,直到找到'\ n'。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct record{
char id[10];
char firstName[20];
char lastName[20];
char score[5];
};
int main(){
FILE *fileptr;
int i=0,idx=0;
fileptr=fopen("students.txt","r");
struct record *pinakas;
pinakas=(struct record *)malloc(17*sizeof(struct record));
if(fileptr){
while(!feof(fileptr)){
fscanf(fileptr,"%[^ ] %[^ ] %[^ ] %[^\n]\n",pinakas[idx].id,pinakas[idx].firstName,pinakas[idx].lastName,pinakas[idx].score);
idx++;
}
}
int i=0;
for(i=0; i<idx; i++){
printf("%s %s %s %s\n",pinakas[i].id,pinakas[i].firstName,pinakas[i].lastName,pinakas[i].score);
}
fclose(fileptr);
return 0;
}