fopen
FILE *fopen(const char *filename, const char *mode);
FILE *fp //文件指针,指向刚打开的文件
- 返回值:成功:返回指向刚打开文件的文件指针,失败:返回NULL指针
- filename: 要打开的文件名字符串
- mode: 访问文件的模式
- mode如下
fprintf
int fprintf (FILE* stream, const char*format, [argument])
- 返回值:成功返回输出的字符数,错误返回一个负值
(从键盘输入数据给变量),把变量里的东西写入文件
- 根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件
- stream:fopen得到的文件指针
- format:%s、%d、%c…
- [argument]:format所对应的变量名
- fprintf()和printf()一样工作
- printf是打印输出到屏幕
- fprintf是打印输出到文件,(即使得信息输出到指定的文件)
//保存文件
int saveFile_clo(node *L)
{
FILE *fpw = fopen("管理信息.txt","w");
if(fpw == NULL){
return 0;
}
else{
//信息存储
node *p=L->next;
while(p !=NULL){
fprintf(fpw,"%d %s %s %d\n",p->id,p->type,p->sex,p->sum);
p=p->next;
}
}
return 1;
}
fscanf
int fscanf(FILE*stream, constchar*format, [argument]);
- 返回值:成功返回输出的字符数,错误返回一个负值
把文件里的东西拿出来,并赋给变量
- 根据数据格式(format)从输入流(stream)中写入数据(argument)
- stream:fopen得到的文件指针
- format:%s、%d、%c…
- [argument]:format所对应的变量名
- 其实就是:从文件指针fp指向的文件中,按format中对应的控制格式读取数据,并存储在agars对应的变量中
//读取文件
int readFile_clo(node *L)
{
FILE *fpr = fopen("管理信息.txt","r");//r表示读取;w为存储
node clo;
node *s;//新结点,下面要malloc
node *t=L;//尾插法
if(fpr == NULL){
return 0;
}
else{
while(fscanf(fpr,"%d %s %s %d", &clo.id, clo.type, clo.sex, &clo.sum) != EOF)
{
s = (node *)malloc(sizeof(node));
*s = clo;
t->next = s;
t = s;
t->next = NULL;
}
}
fclose(fpr);
return 1;
}
头文件
#include<stdio.h>
上代码!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 2
struct Student{
char name[10];
int num;
int age;
float score;
} boya[N],boyb[N],*pa,*pb;
int main(){
FILE *fp;
int i;
pa=boya;
pb=boyb;
if((fp=fopen("D:\\demo.text","wt+"))==NULL)
{
puts("Fali to open file!");
exit(0);
}
//从键盘读入数据,保存到boya中
printf("Input data:\n");
for(i=0;i<N;i++,pa++){
scanf("%s %d %f",pa->name,&pa->num,&pa->age,&pa->score);
}
pa=boya;
//将boya中的数据写入到文件
for(i=0;i<N;i++,pa++)
{
fprintf(fp,"%s %d %d %f\n",pa->name,pa->num,pa->age,pa->score);
}
//重置文件指针
rewind(fp);
//从文件中读取数据,保存到boyb中
for(i=0;i<N;i++){
fscanf(fp,"%s %d %d %f\n",pb->name,&pb->num,&pb->age,&pb->score);
}
pb=boyb;
//将boyb中的数据输出到显示器
for(i=0;i<N;i++){
printf("%s %d %d %f\n",pb->name,pb->num,pb->age,pb->score);
}
fclose(fp);
return 0;
}