C语言的问题,如何读取文件中的内容

我编写了一个程序,输入数据然后结束程序,可以把数据保存在指定的文件中,但是老师要求以后在运行这个程序的时候可以读取那些保存的数据,但是我后面在运行程序的时候,前一次输入的... 我编写了一个程序,输入数据然后结束程序,可以把数据保存在指定的文件中,但是老师要求以后在运行这个程序的时候可以读取那些保存的数据,但是我后面在运行程序的时候,前一次输入的数据保存的那个文件就为空了。第一次输入完数据可以直接显示。而且TXT文件也产生了。但是第二次直接用显示功能,就提示没有输入过,要怎么才能读取已经存在的数据。int loadsale1(){ if((fp1=fopen("c:\\price.dat","r"))==NULL) { printf("File can't open!\n"); exit(0); } n=0; fscanf(fp1,"%d %s %lf",p1->number,p1->name,p1->univalent);// fread(p1,LEN1,1,fp1);// while(!feof(fp1)) { n++; // fread(p1,LEN1,1,fp1);// fscanf(fp1,"%d %s %lf",p1->number,p1->name,p1->univalent); } fclose(fp1); return n;}void savesale1(){ int i; if((fp1=fopen("c:\\price.dat","w"))==NULL) { printf("File can't open!\n"); exit(0); } for(i=0;i<n;i++)// fwrite(p1,LEN1,1,fp1);// fprintf(fp1,"%d %s %.2f ",(p1+i)->number,(p1+i)->name,(p1+i)->univalent); fclose(fp1); return ;}int loadsale2(){ if((fp2=fopen("c:\\saleman.dat","r"))==NULL) { printf("File can't open!\n"); exit(0); } n=0; fscanf(fp2,"%d %s %lf",p2->number,p2->name); //fread(p2,LEN2,1,fp2); while(!feof(fp2)) { n++; // fread(p2,LEN2,1,fp2); fscanf(fp2,"%d %s %lf",p2->number,p2->name); } fclose(fp2); return n;}void savesale2(){ int i; if((fp2=fopen("c:\\sale.dat","w"))==NULL) { printf("File can't open!\n"); exit(0); } for(i=0;i<n;i++)// fwrite(p2,LEN2,1,fp2); fprintf(fp2,"%d %s %.2f ",(p2+i)->number,(p2+i)->name); fclose(fp2); return ;}这段代码是程序代码中的一段,负责从文件中读取数据和保存数据到文件中的代码。运行是没问题的。就是不能读取数据。请大家帮忙,谢谢。我是编程小白。 展开
 我来答
若以下回答无法解决问题,邀请你更新回答
风清月朗z0
2016-06-17 · TA获得超过545个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:162万
展开全部
 在C语言中,文件操作都是由库函数来完成的。
要读取一个txt文件,首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。

下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。

C语言源程序如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;

int main(int argc, char* argv[])
{
//打开文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);

//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}

//关闭文件
fclose(r);
fclose(w);

system("pause");
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式