每天3-4道c语言练习题(第14天) c语言文件操作

首先展示一下文件操作的基础

FILE *fp(文件地址,模式);

文件地址: 可以是绝对地址  由于" \ "为转义符所以用的时候要用两个,比如说:E:\\file\\w.txt 当然也可以写成这样 E:/file/w.txt

模式

模式含 义说 明
r只读读取文件(文件必须存在)
w只写若文件存在,则清除原文件内容后写入;否则,会创建一个新文件后写入
a追加只写若文件存在,接着原文写。
r+读写增加了可写的功能(文件必须存在)
w+写读增加了可读的功能
a+写读增加了可读的功能
rb二进制读同上,不过读出的是二进制
wb二进制写同上
ab二进制追加同上
rb+二进制读写同上
wb+二进制写读同上
ab+二进制写读同上

  文件 中读取 字符 赋值给 变量 : fgets(变量名(可以为字符数组),最大获取长度,文件指针);

 字符数组 输出到 文件 中: fputs (字符数组, 文件指针);

1.题目

从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。

程序分析

☺没有

代码展示

#include<stdio.h>
void main(){
	char a;
	char file_name[20]="E:/file/w.text";
	FILE *fp=fopen(file_name,"ab");
	printf("请输入字符(输入#结束):");
	while((a=getchar())!='#'){
		fputc(a,fp);
	}
	fclose(fp);
	printf("存储完毕!");
}

运行结果

 

2.题目

从键盘输入一个字符串,将小写字母全部转换成大写字母,
然后输出到一个磁盘文件"test"中保存。 输入的字符串以!结束。

程序分析

☺还是没有

代码展示

#include <stdio.h>
void main(){
	char a='a';
	char file_name[20]="E:/file/test.text";
	FILE *fp=fopen(file_name,"a");
	printf("请输入字符(输入!结束):");
	while((a=getchar())!='!'){
		if(a<=122&&a>=97){
			a-=32;
		}
		fputc(a,fp);
	}
	fclose(fp);
	printf("存储完毕!");
	
}

运行结果

3.题目

有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),
输出到一个新文件C中。

程序分析

☺依然没有

代码展示

#include <stdio.h>
void main(){
	char f[100];
	int i; 
	FILE *fpA=fopen("D:/file/A.txt","r");
	FILE *fpB=fopen("E:/file/B.txt","r");
	FILE *fpC=fopen("D:/file/C.txt","a");
	if((fpA==NULL)||(fpB==NULL)){
		printf("A或B文件未创建!");
	}else{
		fgets(f,99,fpA);
		fclose(fpA);
		fputs(f,fpC);
		fgets(f,99,fpB);
		fclose(fpB);
		fputs(f,fpC);
		fclose(fpC);
	}
	printf("ok");
	
}

运行结果

4.题目

有五个学生,每个学生有3门课的成绩,
从键盘输入以上数据(包括学生号,姓名,三门课成绩),
计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

程序分析

☺俺要睡觉

代码展示

#include <stdio.h>
typedef struct{
	int num;
	char name[10];
	int cj1;
	int cj2;
	int cj3;
}stdent;
stdent std[5];
void main(){
	int i;
	FILE *fpC=fopen("D:/file/C.txt","a");
	printf("请输入5个学生的信息:(学生号	姓名	成绩)\n");
	for(i=0;i<5;i++){
		scanf("%d%s%d%d%d",&std[i].num,std[i].name,&std[i].cj1,&std[i].cj2,&std[i].cj3);
		fprintf(fpC,"%d%s%d%d%d",std[i].num,std[i].name,std[i].cj1,std[i].cj2,std[i].cj3);
	}
	
}

运行结果

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦可尤曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值