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
然后把读取的成绩存入了二维数组中。
麻烦大家帮忙想想,我再加分,谢谢了。 展开
学号 语文 数学 英语
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
然后把读取的成绩存入了二维数组中。
麻烦大家帮忙想想,我再加分,谢谢了。 展开
8个回答
推荐于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;
}
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;
}
展开全部
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
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果能确定只有第一行要去掉,可以
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);
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);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一行要去掉
学号这一列的数据也不要
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);
学号这一列的数据也不要
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询