首页 > 编程语言 >C程序设计(第五版)谭浩强---第十章 文件的输入输出习题

C程序设计(第五版)谭浩强---第十章 文件的输入输出习题

时间:2024-03-28 22:00:57浏览次数:33  
标签:fp 文件 include filename --- ch printf 习题 第五版

例1:从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个'#'为止

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

int main() {
	FILE* fp;
	char ch, filename[20];
	printf("输入文件名:");
	gets_s(filename);
	if ((fp = fopen(filename, "w")) == NULL) {
		printf("打开错误!");
		exit(0);
	}
	printf("输入字符串(以'#'结束):");
	ch = getchar();
	while(ch != '#') {
		fputc(ch, fp);
		ch = getchar();
	}
	fclose(fp);
	return 0;
}

例2:将一个磁盘文件中的信息复制到另一个磁盘文件中。今要求将上例建立的a.txt文件中的内容复制到另一个磁盘文件中的b.txt中

feof()函数:检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0。一般在文件操作,中经常使用feof()判断文件是否结束。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {
	FILE* p, * q;  // p指向读入文件,q指向输出文件
	char ch, filename1[20], filename2[20];
	printf("请输入读入文件的名字:");
	gets_s(filename1);
	if ((p = fopen(filename1, "r")) == NULL) {
		printf("无法打开此文件");
		exit(0);
	}
	printf("请输入写入文件的名字:");
	gets_s(filename2);
	if ((q = fopen(filename2, "w")) == NULL) {
		printf("无法打开此文件");
		exit(0);
	}
	ch = fgetc(p);
	while (!feof(p)) {
		fputc(ch, q);
		ch = fgetc(p);
	}
	fclose(p);
	fclose(q);
	return 0;
}

例3:从键盘读入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void swap(char *p, char *q) {
	char temp[100];
	strcpy(temp, p);
	strcpy(p, q);
	strcpy(q, temp);
}

int main() {
	FILE* fp;
	char a[100], b[100], c[100], filename[20];
	int i, j;
	gets_s(a);
	gets_s(b);
	gets_s(c);
	// 假设字符串从小到大排序
	if (strcmp(a, b) > 0) swap(a, b);
	if (strcmp(a, c) > 0) swap(a, c);
	if (strcmp(b, c) > 0) swap(b, c);
	printf("请输入文件名:");
	gets_s(filename);
	if ((fp = fopen(filename, "w")) == NULL) {
		printf("无法打开文件!");
	}
	fputs(a, fp);
	fputc('\n', fp);		// 向文件输入换行符
	fputs(b, fp);
	fputc('\n', fp);
	fputs(c, fp);
	fclose(fp);
	return 0;
}

例4:从键盘输入5个学生的有关数据,然后把它们转存到磁盘文件上去

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define N 5

//从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去
struct student {
	int num;
	char name[10];
	int age;
	char addr[20];
};

int main() {
	FILE* fp;
	int i;
	char filename[20];
	struct student stu[N];
	printf("请输入文件名:");
	gets_s(filename);
	if ((fp = fopen(filename, "wb")) == NULL) {
		printf("无法打开文件!");
		exit(0);
	}
	for (i = 0; i < N; i++) {
		printf("请输入第%d位学生的信息:", i + 1);
		scanf("%d%s%d%s", &stu[i].num, &stu[i].name, &stu[i].age, &stu[i].addr);
		if ((fwrite(&stu[i], sizeof(struct student), 1, fp)) != 1) {
			printf("文件未被写入!");
		}
	}
	fclose(fp);
	return 0;
}

标签:fp,文件,include,filename,---,ch,printf,习题,第五版
From: https://blog.csdn.net/m0_60875396/article/details/136778158

相关文章

  • 习题2-4 求交错序列前N项和
    本题要求编写程序,计算交错序列1-2/3+3/5-4/7+5/9-6/11+...的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,结果保留三位小数。输入样例:5输出样例:0.917#include<stdio.h>#include<math.h>intmain(){ intn; scanf(......
  • 1238 - 【入门】统计每个月兔子的总数
    题目描述有一对兔子,从出生后第3个月起每个月都生一对兔子,一对小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月(n<=50)的兔子总数为多少对?输入:输入1个整数n,表示第几个月输出:第n个月兔子的总数量有多少对?样例:输入9输出34#include<bits/stdc++.h>usi......
  • 新机器安装docker (新手笔记)-- 知其所以然
    1.安装Docker-2024.03.28官方手册清华大学开源软件镜像站|可从主页找到Docker资源#AddDocker'sofficialGPGkey:sudoapt-getupdatesudoapt-getinstallca-certificatescurlsudoinstall-m0755-d/etc/apt/keyringssudocurl-fsSLhttps://download.docker......
  • 2024-03-28
    2024-03-28\({\color{Red}\Large到成都集训来了!}\)晚上自习YY的GCD\({\color{Chocolate}Problem}\)\(i\in[1,n],j\in[1,m]\\\m,n\le10^7\),\(T\le10^4\)组询问,求\(\gcd(i,j)\)是素数的\((i,j)\)对数\({\color{Chocolate}Solution}\)\[\begin{align*}......
  • Ubuntu22.04下Issac Gym/宇树机器人RL&gcc/g++,CUDA,CUDA ToolKit,Pytorch配置环境配
    前置条件本随笔写作Condition:在本人3050Ti笔记本上配好环境后,再在室友4060笔记本上边配边记录整理所得。室友的系统已经配好了相应驱动,因此,本随笔内容基于已经安装了NVIDIA显卡驱动的系统。下次搞到没装驱动的系统我再补一个随笔。宇树机器人宇树科技的文档中心有一个简单的安......
  • 硬件组成-CPU-编码-浮点数
    计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。存储器是计算机系统中的记忆设备,分为内部存储器和......
  • 【selinux】linux的信息安全模块 - selinux
    1.Selinux简介selinux全称(Security-EnhancedLinux)安全增强型Linux,它是一个Linux内核模块,也是Linux的一个安全子系统。2.Selinux的作用及权限管理机制2.1Selinux的作用SELinux主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。2.2DAC在没有使用SE......
  • (7-6)行为预测算法:基于Trajectron++模型的行为预测系统
    7.6 基于Trajectron++模型的行为预测Trajectron++是一个用于多目标轨迹预测和规划的深度学习模型,旨在应对自动驾驶和机器人等领域中的挑战,其中多个移动目标需要被准确地预测其未来运动轨迹,以便做出智能决策。7.6.1 Trajectron++模型的特点Trajectron++模型的主要特点和......
  • 【华为OD机试真题】A卷-士兵过河(Python)
    一、题目描述【华为OD机试真题】A卷-士兵过河(Python)题目描述:一支N个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河。敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭。现在军队只找到了1只小船,这船最多能同时坐上2个士兵。1)当1个士兵划船过河,用时为a[i];0<=i<......
  • 【华为OD机试真题】A卷-日志首次上报最多积分(JAVA)
    一、题目描述【华为OD机试真题】A卷-日志首次上报最多积分(JAVA)题目描述:日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验;如果一次上报的条数太多,会导致超时失败。为此,项......