C语言从txt文件读取数据的问题

一个关于学生成绩的stu.txt文件里有这样的数据:学号语文数学英语019998900298969103979298……怎么通过C语言读取文件里面的这些数据,不包括第一行... 一个关于学生成绩的stu.txt文件里有这样的数据:

学号 语文 数学 英语
01 99 98 90
02 98 96 91
03 97 92 98
……
怎么通过C语言读取文件里面的这些数据,不包括第一行的“学号 语文 数学 英语”,然后把这些数据存入到一个二维数组里呢?
不好意思再完善一下问题,学号这一列的数据也不需要,只需要成绩
99 98 90
98 96 91
97 92 98
……
总行数是已知的,假设是N行,但是我只需要一部分数据,从第x行到第y行的。
比如这三行数据,我只要后面两行数据,输入2 3之后,读取了
98 96 91
97 92 98
然后把读取的成绩存入了二维数组中。
麻烦大家帮忙想想,我再加分,谢谢了。
展开
 我来答
匿名用户
推荐于2016-10-18
展开全部
#include <stdio.h>
int main(void)
{
FILE *fp=fopen("a.txt","r");
int a[10][3];
int i,j=0,x=2,y=3,rows;
fscanf(fp,"%*[^\n]%*c");//忽略标题行
for (i=1;i<x;i++)//跳过前x-1行
fscanf(fp,"%*[^\n]%*c");
rows=y-x+1;//计算要读取的行数
for (i=0;i<rows;++i)//分别读取每一行的数据
{
fscanf(fp,"%d",&x);//跳过每行第一个数字(即学生编号)
for (x=0;x<3;x++)//分别读取其余三个成绩
fscanf(fp,"%d",&a[j][x]);
j++;
}
fclose(fp);//关闭文件
for (i=0;i<rows;i++)//输出结果
{
for (j=0;j<3;j++)
printf("%d " ,a[i][j]);
putchar('\n');
}
return 0;
}
一骑当后
推荐于2016-02-11 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306436
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

C语言读取文件中的TXT数据,参考代码如下: 

读文件中的TXT数据:

#include <stdio.h>
#include <iostream.h>
void main()
{
 FILE* EMFile = fopen("D://EMFile.TXT","r");
 if (!EMFile) {
  cout<<"FILE NOT FOUND!";
  return;
 }
 int XN=2;//假设文件有两行,三列
 int YN=3;
 float** Ef;
 Ef = new float*[XN];
 for(int idx=0;idx<XN;idx++)
 {
  Ef[idx] = new float [YN];
 }
 for(int i=0;i<XN;i++)
 {
  for(int j=0;j<YN;j++)
   Ef[i][j] = 0.0 ;
 }
 for(int xn=0;xn<XN;xn++)
 {
  for(int yn=0;yn<YN;yn++)
  {
   fscanf(EMFile,"%f",&Ef[xn][yn]);//假如是科学计数法写成%e或者%le
 }
 }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f160a72
2012-10-19 · TA获得超过363个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:400万
展开全部
#include <stdio.h>
#include <stdlib.h>
#define FILE_PATH "stu.txt"
int func(int **a)
{
FILE *fdr;
char buf[256], temp[3];
int i, j;
if((fdr = fopen(FILE_PATH, "r")) == NULL)return -1;
fgets(buf, 256, fdr); //跳过第一行
i = 0;
while(!feof(fdr))
{
fscanf(fdr, "%s", temp); //跳过编号
for(j = 0; j < 3; j++) fscanf(fdr, "%d", &(a[i][j]));
i++;
}
fclose(fdr);
return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火梦幻
2012-10-19 · TA获得超过2308个赞
知道小有建树答主
回答量:1095
采纳率:57%
帮助的人:425万
展开全部
如果能确定只有第一行要去掉,可以
FILE *fp = fopen("stu.txt", "r");
char buffer[128];
fgets(buffer, sizeof(buffer), fp);
int score[128][4];
int stu_count = 0;
while (4 == fscanf(fp, "%d%d%d%d", &score[stu_count][0], &score[stu_count][1], &score[stu_count][2], &score[stu_count][3]) )
{
stu_count++;
}

fclose(fp);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2012-10-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2829万
展开全部
第一行要去掉
学号这一列的数据也不要
FILE *fp = fopen("stu.txt", "r");
char buffer[128];
fgets(buffer, sizeof(buffer), fp);
int score[128][3];
int stu_count = 0;
while (4 == fscanf(fp, "%*d%d%d%d", &score[stu_count][0], &score[stu_count][1], &score[stu_count][2],)
{
stu_count++;
}

fclose(fp);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式