| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3772 人关注过本帖, 1 人收藏
标题:[求助]关于C语言对文件的操作 ,如何从文件中检索有用信息
取消只看楼主 加入收藏
沙漠里的骆驼
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-26
收藏(1)
 问题点数:0 回复次数:3 
[求助]关于C语言对文件的操作 ,如何从文件中检索有用信息
我想从以下数据中检索出成绩大于60的学生的学号
以下信息是放在文件data.txt中的,见附件
data.txt的内容如下:
学号 成绩
101 45
105 100
189 99
109 13
110 60
108 77
117 68
99 25
255 65
102 100
nKmqjOkI.txt (136 Bytes) [求助]关于C语言对文件的操作 ,如何从文件中检索有用信息


我知道应该先从文件中把这些数据读出来,到底是读到数组中呢
还是读到结构体中呢?读到结构体中又怎样读呢?
我应经查了好多关于文件操作的资料了,可是还是没有解决,
希望各位大虾能指点一下!!
先谢谢了

2jBmpmDs.txt (136 Bytes) [求助]关于C语言对文件的操作 ,如何从文件中检索有用信息

搜索更多相关主题的帖子: 文件中 C语言 有用信息 检索 学号 
2007-09-19 10:25
沙漠里的骆驼
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-26
收藏
得分:0 
二进制也行,你能不能将你的代码让我看看,对了要有你处理的
数据,谢谢
2007-09-19 11:26
沙漠里的骆驼
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-26
收藏
得分:0 

谢谢,不过你可能误解我的意思了,我的数据不是通过程序输入的,
是原来就有的,我写程序的目的就在于处理这些数据 ,如果数据很多
的话,通过一个个输入是解决不了问题的,再次感谢您的关注和帮助 !
不过我已经解决了,程序如下::
//================================================================
//程序名:data0101.c
//编程者:tinghua 沙漠里的骆驼
//编程时间:2007-09-19 12:59
//MSN:zhangshengheng@hotmail.com
//程序功能:从文件中文本文件中读取数据见到数组中,
//具体是从data.txt中读数据,放在数组中,通过比较成绩,将成绩大
//于60的学生的学号给找出来了,并按照成绩大小排序,输出到data0101.txt中
//================================================================
#include<stdio.h>
#include<conio.h>
#include<process.h>
FILE *fp;
int buf[100][2];//定义缓冲区,存储从文件读出的数据
int data[50][2];//定义存放成绩大于60的学生的成绩

void display(int n,int x[][2])//显示函数
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<2;j++)
{
printf("%d ",x[i][j]);
if(j==1) printf("\n");
}
}
void read_file()//从文件中格式化读入数据子函数
{
int i;

if((fp=fopen("data.txt","r"))==NULL)//打开文件
{
printf("\nCannot open this file.press any key to exit!\n");
getch();
exit(1);
}
while(!feof(fp)) //从文件中格式化读入数据
{
for(i=0;i<10;i++)
fscanf(fp,"%d%d", &buf[i][0],&buf[i][1]);
}
printf("\n\nthe data.txt has been succeeded to read ,the data is:\n");

if(fclose(fp)!=0)//关闭文件
{
printf("\n the file cannot be closed!press any key to exit\n");
getch();
exit(1);
}

}

void write_file()//向文件中格式化写入数据子函数
{
int i,j;
if((fp=fopen("data0101.txt","w+"))==NULL)//打开文件
{
printf("\nCannot open this file.press any key to exit!\n");
getch();
exit(1);
}
for(i=0;i<7;i++)//格式化输出到文件
{
for(j=0;j<2;j++)
{
fprintf(fp,"%8d%7d",data[i][j]);
if(j==1) fprintf(fp,"\n");
}
}
if(fclose(fp)!=0)//关闭文件
{
printf("\n the file cannot be closed!press any key to exit\n");
getch();
exit(1);
}
}

int main(void)
{

int i,j=0;
display(10,buf);//显示子函数,将从文件中调入的数据显示出来

for(i=0;i<10;i++)//从读入的数据中选出成绩大于60的学生
{
if(buf[i][1]>=60)
{
data[j][1]=buf[i][1];
data[j][0]=buf[i][0];
j++;
}
}

printf("\n\nthe students whose score >60 are: \n");
display(j,data);//显示成绩大于60的学生

write_file();//将成绩大于60的学生写入文件

return 0;
}

2007-09-19 17:00
沙漠里的骆驼
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-26
收藏
得分:0 

还有别人用结构体实现的程序:
#include <stdio.h>
#include <stdlib.h>

typedef struct _student
{
int id;
int score;
} Student;

int readData(Student** p, FILE* pf)
{
int n = 8, i = 0;
*p = (Student*)malloc(n * sizeof(Student));
while(fscanf(pf, "%d %d", &(*p)[i].id, &(*p)[i].score) != -1)
{
if(++i == n)
{
n <<= 1;
*p = (Student*)realloc(*p, n * sizeof(Student));
}
}
*p = (Student*)realloc(*p, i * sizeof(Student));
return i;
}

int main(void)
{
Student* pstu = 0;
int n = 0, i = 0;
FILE* pf = fopen("data.txt", "r");
if(!pf)
printf("error!\n");
else
{
n = readData(&pstu, pf);
for(i = 0; i < n; i++)
if(pstu[i].score > 60)
printf("id = %d\tscore = %d\n", pstu[i].id, pstu[i].score);
}
free(pf);
return 0;
}

2007-09-19 17:01
快速回复:[求助]关于C语言对文件的操作 ,如何从文件中检索有用信息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048374 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved