C语言习题:文件操作输入输出

本文介绍C语言中文件输入输出的基本操作,包括如何向文件中写入数据并按行读取,以及如何通过fgets和fputs函数实现两文件间的数据复制。此外,还探讨了处理文件中整数行的求和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件输入输出
1.向文件中写入数据,每次读取值读取一整行,假定文件中每一行包含字符不超过20个。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{   	
	char buf[40];
 	FILE *fp;
 	fp = fopen("a.txt","w+");
 	if(fp==NULL)
 {	
	printf("error");
	exit(0);
 }
	fputs("ABCDEFG\nAH AUI PPORW\nWIFDNCZXUIS\n   *  ",fp);
	rewind(fp);
	while(!feof(fp)){
		fgets(buf,20,fp);
		printf("%s",buf);
		}
	if(fclose(fp)!=0)
	{
		printf("closeerror");
	}
	
	return 0;
}

如果一行字符超过20个不影响结果因为下一次fgets继续读取。因为最大字符限制(fgets第二个参数)而读取结束的情况,真正读取到的字符回必最大字符限制少1,函数会自动添加一个结束标志使其中的字符变成字符串。如果发现有一条fgets读取数据但其缓冲数组打印为出“空”的情况,可能是上一次读取或对文件的操作使指针停留在换行符之前,造成了本次只打印一个换行符。
2.用户输入两个文件名,从标准输入读取他们,第一个作为输入文件,第二个作为输出文件。这个修改后的程序应该打开着两个文件吧输入文件的内容按行复制给输出文件。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{   	
	char buf[40];
	char f[20],f2[20];
	
 	FILE *fp,*fp2;
 	printf("请输入第一个文件名");
	gets(f);
	printf("请输入第一个文件名");
	gets(f2);
 	fp = fopen(f,"w+");
 	fp2 =  fopen(f2,"a+");
 	if(fp==NULL||fp==NULL)
 {	
	printf("error");
	exit(0);
 }
	fputs("ABCDEFG\nAH AUI PPORW\nWIFDNCZXUIS\n   *  ",fp);
	rewind(fp);
	while(!feof(fp)){
	
	fgets(buf,20,fp);
	fputs(buf,fp2);
	}
	
	if(fclose(fp)!=0||fclose(fp2))
	{
		printf("closeerror");
	}
	
	return 0;
}

查询上面文件以整数开始的行,对这些整数值进行求和再写入到输出文件尾部。在这里插入图片描述
fgets函数对一整行的定义不明确,而且就算取出正好一行也仅仅是对第一个字符进行操作。使用getc取出字符,flag位为当前字符是否为首字符,初值为1,当读取到一个换行符时,下一个字符必为首字符。如果取到的字符是整数则将其转化为int型进行计算,将计算结果再转换为字符型,向目标文件中写入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值