【求助】C语言中如何从文本文件中读入数据到结构体数组T^T

文本文件如上,大约有34个

结构体数组如上图,题主正在C语言实习中。。。真难,求大神批评指导~~~~(>_<)~~~~
我自己弄的如下

怎么搞?要死要死要死要死要死(。)

楼上说的其实是对的。建议使用fgets

char buff[100];
int i = 0; //N可能为常量,无法变化的
fgets(buff,100,fp); // è¯»å–第一行文件
while(!feof(fp))
{
memset(buff,0,100);
fgets(buff,100,fp);
sscanf(buff,"%d %s %d %d %d %d",&x[i].xh,x[i].name,&x[i].English,&x[i].Clanguage,&x[i].Math,&x[i].average,&x[i].sum);
i++;
}

满意请采纳!

追问

明天答复哈~之前在机房

能给完整的么☆(ゝ。) 这个编译的话不知道怎么添加头文件呢:-D

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-25
用fgets()追问

求代码。。。

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

void main() 
{  
FILE *fp;
char file[20];
if(NULL == (fp = fopen("eg.txt","r")))//假设当前目录下有eg.txt
{
exit(0);
}
else
{
fgets(file,sizeof(file),fp);
printf("%s\n",file);
}
fclose(fp);

}

追问

明天答复哈~之前在机房

追答

…………

追问

只读入了第一行的数据,其他的。。。怎么破?要死了。。。

希望能读完数据~

追答#include <stdio.h>
#include <stdlib.h>
 
void main() 
{    
    FILE *fp;
    char file[256] = {0};
int i = 0;
    if(NULL == (fp = fopen("eg.txt","r")))//假设当前目录下有eg.txt
    {
        exit(0);
    }
    else
    {
        while(EOF != (file[i] = fgetc(fp)))
{
i++;
}
        printf("%s\n",file);
    }
    fclose(fp);
 
}

 这个也可以

#include <stdio.h>
#include <stdlib.h>
 
void main() 
{    
    FILE *fp;
    char file[256] = {0},file2[20] = {0};

if(NULL == (fp = fopen("eg.txt","r")))//假设当前目录下有eg.txt
    {
        exit(0);
    }
    else
    {
        while(NULL != (fgets(file2,sizeof(file2),fp)))
{
sprintf(file,"%s%s",file,file2);
}
        printf("%s\n",file);
    }
    fclose(fp);
 
}

本回答被提问者采纳
相似回答