文件操作函数(fopen、fprintf、fscanf)

fopen

FILE *fopen(const char *filename, const char *mode);

FILE *fp //文件指针,指向刚打开的文件

  • 返回值:成功:返回指向刚打开文件的文件指针,失败:返回NULL指针
  • filename: 要打开的文件名字符串
  • 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;
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
f和fprintfC语言中用于文件操作函数fscanf函数用于从文件中读取格式化数据。它的语法如下: ```c int fscanf(FILE *stream, const char *format, ...); ``` 其中,stream是一个指向FILE类型对象的指针,表示要读取的文件流;format是一个字符串,指定了要读取的数据的格式;...表示要读取的数据将按照format指定的格式存储到后续的变量中。fscanf函数会根据format字符串中的格式说明符从文件中读取数据,并将数据赋值给相应的变量。 例如,我们可以使用fscanf从一个名为input.txt的文件中读取两个整数,并将它们存储到两个变量中: ```c #include <stdio.h> int main() { FILE *file = fopen("input.txt", "r"); int num1, num2; if (file != NULL) { fscanf(file, "%d %d", &num1, &num2); fclose(file); printf("Read numbers: %d, %d\n", num1, num2); } else { printf("Failed to open file.\n"); } return 0; } ``` fprintf函数用于将格式化数据写入文件。它的语法如下: ```c int fprintf(FILE *stream, const char *format, ...); ``` 其中,stream是一个指向FILE类型对象的指针,表示要写入的文件流;format是一个字符串,指定了要写入的数据的格式;...表示要写入的数据将按照format指定的格式从后续的变量中获取。fprintf函数会根据format字符串中的格式说明符将数据格式化并写入文件。 例如,我们可以使用fprintf将两个整数写入一个名为output.txt的文件中: ```c #include <stdio.h> int main() { FILE *file = fopen("output.txt", "w"); int num1 = 10, num2 = 20; if (file != NULL) { fprintf(file, "Numbers: %d, %d\n", num1, num2); fclose(file); printf("Data written to file.\n"); } else { printf("Failed to open file.\n"); } return 0; } ``` 以上是关于fscanf和fprintf函数的简单介绍,希望能对你有所帮助。如果你还有其他问题,请继续提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值