【C】文件读写问题

C语言对文件操作的部分有可能被考到,虽然比较冷门,但是还是有了解的必要的。

题目是这样的:有两个磁盘文件“c:\A.txt"与“c:\B.txt",各存放一行字母,要求把两个文件的信息合并,并且按字母顺序排列,输出到c:\C.txt中。比如:

在C盘中有:


“c:\A.txt"中有字母如下:

“c:\B.txt"中有字母如下:


程序运行完之后,在C盘会多出一个c:\C.txt,里面的结果是这样:


本题的代码如下:

#include<stdio.h>
#include<stdlib.h>
void main(){
	char s[80];
	char c;
	int i=1,j;
	FILE *fp;
	//A文件的读取
	if((fp=fopen("C:\\A.txt","r"))==NULL){
		printf("Can't open this file\n");
		exit(0);
	}
	while((c=fgetc(fp))!=EOF){//将A中的字符一个字符一个字符地读入到s[80]字符数组里面
		s[i]=c;
		i++;
	}
	//B文件的字符追加读取到s[80]字符数组里面
	if((fp=fopen("C:\\B.txt","r"))==NULL){
		printf("Can't open this file\n");
		exit(0);
	}
	while((c=fgetc(fp))!=EOF){
		s[i]=c;
		i++;
	}
	s[i]='\0';//读完文件,写完字符串封口是必不可少的
	//冒泡排序
	for(i=1;s[i]!='\0';i++){
		for(j=1;s[j]!='\0';j++){
			if((s[j]>s[j+1])&&(s[j+1]!='\0')){
				s[0]=s[j];
				s[j]=s[j+1];
				s[j+1]=s[0];
			}
		}
	}
	//打开C文件进行输出
	fp=fopen("C:\\C.txt","w+");
	for(i=1;s[i]!='\0';i++){//s[0]作为数据交换的临时空间
		fputc(s[i],fp);
	}
	fclose(fp);
}

这里的话,其实C语言对文件的操作也不难,虽然对文件操作的方式有多种,但是这样记住最基本的操作文件的方式即可。

比如,首先你要通过FILE* 声明一个文件指针。并且用fopen将这个指针指向要打开的文件。其中fopen后的第二个参数:

r为单纯的读取,

w+为覆盖写入,如果要求追加写入则为a+。

操作完文件之后需要用fclose方法清空这个文件指针。

通过文件指针对文件操作也容易,利用fgetc来获取文件中的一个字符,fputc向文件输出一个字符。

读取到字符一般存放到字符数组里面,进行进一步的操作,输出字符,则是对字符数组进行遍历,fputc的第二个参数为文件指针,指明要输出到文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值