c语言文件操作(fgetc,fputc,fgets,fputs,fprintf,fscanf,feof)

这里只是针对文本文件的简单操作。假设我要对txt文件操作

//文件只读(fgetc)

	char fileName[20]="C:\\test.txt";
	FILE* fp = fopen(fileName, "r");//打开文件
	if (fp==NULL)//判断文件打开是否成功
	{
		printf("打开%s文件失败!", fileName);
		exit(-1);
	}
	//循环读取字符串
	while (!feof(fp)) {     //feof在到达给出的文件流的文件尾时返回一个非零值.
		char c= fgetc(fp);//每次读取一个字符
		putchar(c);
	}
	fclose(fp);//关闭文件

//文件只写 并且会覆盖原来的内容,谨慎操作(fputc、fputs)

 	char fileName[20] = "C:\\test.txt";
	FILE* fp = fopen(fileName, "w");//打开文件
	if (fp == NULL)//判断文件打开是否成功
	{
		printf("打开%s文件失败!", fileName);
		exit(-1);
	}
	//方法一:把字符串写入文件(fputc)
	char c;
	while ((c=getchar())!='\n') { //换行则退出   
		fputc(c,fp);          //fputc(一个字符或者字符变量,要写入的文件)
	}
//方法二:把字符串写入文件(fputs)
	char buffer[100];
	while (1)
	{
		gets_s(buffer);//在控制台输入字符串
		if (strcmp(buffer,"quit")==0)//当字符串等于quit,则退出
		{
			break;
		}
		fputs(buffer, fp);//把buffer里的字符串存入fp文件中
		fputs("\n", fp);
	}
	fclose(fp);//关闭文件

//文件拷贝。只要知道了文件读取与写入,那么,文件之间的拷贝就轻而易举了。

	char fileName[20] = "C:\\test.txt";
	FILE* fpr = fopen(fileName, "r");//打开读取的文件
	if (fpr == NULL)//判断文件打开是否成功
	{
		printf("打开%s文件失败!", fileName);
		exit(-1);
	}
	char fileName1[20] = "C:\\test1.txt";
	FILE* fpw = fopen(fileName1, "w");//打开或者创建一个要写入的文件
	if (fpw == NULL)
	{
		printf("打开%s文件失败!", fileName);
		exit(-1);
	}
	while (!feof(fpr)) {    //feof()函数来检测fpr文件的长度
		char c = fgetc(fpr);
		fputc(c, fpw);
	}
	fclose(fpr);
	fclose(fpw);

//fprintf(),fscanf() 用法

假设我要往文件里存入结构体的数据,那么就先建一个结构体

typedef struct
{
	char name[20];//姓名
	int age;        //年龄
	float score;   //分数
}Student;
//把写入文件的操作放在一个函数里,方便主函数调用
void writeFile() {
	char fileName[20] = "C:\\test2.txt";
	FILE* fp = fopen(fileName, "w");//打开文件
	if (fp == NULL)
	{
		printf("打开%s文件失败!", fileName);
		exit(-1);
	}
	Student stu = { "Tom",25,98.8 };//往结构体输入数据
	fprintf(fp, "%s %d %.2f\n",stu.name,stu.age,stu.score );/*fprintf(文件,录入格式,结构体数据),格式很关键,数据之间可以是空格,也可以是逗号,比如我用这样的方式存入文
件"%s,%d,%.2f\n",那么在fscanf调用时,也要加上逗号,不然会出错*/
	fclose(fp);//关闭文件
	getchar();
}
//把要读取的文件放在一个函数里,方便主函数调用
void readFile() {
	char fileName[20] = "C:\\test2.txt";
	FILE* fp = fopen(fileName, "r");//打开文件
	if (fp == NULL)
	{
		printf("打开%s文件失败!", fileName);
		exit(-1);
	}
	Student stu;
	fscanf(fp, "%s %d %.2f\n", stu.name, &stu.age, &stu.score);//把fp里的数据放在student结构体中,注意格式
	printf("%s %d %.2f\n",stu.name,stu.age,stu.score );//从结构体中打印数据
	fclose(fp);//关闭文件
	getchar();
}




  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值