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

C程序设计 (第四版) 谭浩强 例10.3

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

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块
方法:使用指针,函数的模块化设计,动态分配内存
说明:这里准备先写入的文件名称为Test.txt,文件已经存在于该项目目录下。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define M 3
#define N 80//初始化所需变量
void initialVar(char ***str, int m, int n, char **name){*str = (char**)malloc(m * sizeof(char*));for(int i = 0; i < m; i++){(*str)[i] = (char*)malloc(n * sizeof(char));}*name = (char*)malloc(n * sizeof(char));
}//输入字符串
void inputStr(char **str, int m){printf("Enter %d Strings:\n", m);for(int i = 0; i < m; i++){printf("Enter No.%d Strings: ", i + 1);gets(str[i]);}printf("\n");
}//对字符串进行升序排列
void ascendingSortStr(char **str, int m, int n){char *temp = (char*)malloc(n * sizeof(char));for(char **p = str; p < str + m; p++){for(char **q = p + 1; q < str + m; q++){if(strcmp(*p, *q) > 0){strcpy(temp, *p);strcpy(*p, *q);strcpy(*q, temp);}}}free(temp);
}//输入文件名称
void inputFileName(FILE **file, char *name){printf("Enter File Name: ");scanf("%s", name);*file = fopen(name, "r");if(*file == NULL){perror("Cannot open this file");system("pause");exit(0);}*file = fopen(name, "w+");
}//将字符串写入文件
void inputFile(FILE **file, char **str, int m){for(int i = 0; i < m; i++){fputs(str[i], *file);fputs("\n", *file);printf("%s\n", str[i]);}fclose(*file);putchar(10);
}//释放分配变量的内存
void freeVar(char ***str, int m, char **name){for(int i = 0; i < m; i++){free((*str)[i]);}free(*str);free(*name);
}int main(){FILE *file = NULL;char **str = NULL;char *name = NULL;initialVar(&str, M, N, &name);inputStr(str, M);ascendingSortStr(str, M, N);inputFileName(&file, name);inputFile(&file, str, M);freeVar(&str, M, &name);system("pause");return 0;
}
运行结果如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023_Spark_实验二十五:SparkStreaming读取Kafka数据源:使用Direct方式

SparkStreaming读取Kafka数据源&#xff1a;使用Direct方式 一、前提工作 安装了zookeeper 安装了Kafka 实验环境&#xff1a;kafka zookeeper spark 实验流程 二、实验内容 实验要求&#xff1a;实现的从kafka读取实现wordcount程序 启动zookeeper zk.sh start# zk.sh…

生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)

如果x加上x的各个数字之和得到y&#xff0c;就说x是y的生成元。 给出n&#xff08;1≤n≤100000&#xff09;&#xff0c;求最小生成元。 无解输出0。 例如&#xff0c;n216&#xff0c;121&#xff0c;2005时的解分别为198&#xff0c;0&#xff0c;1979。 我的思路很简单&am…

element-UI中el-scrollbar的使用

在elment-ui中有这么一个滚动条&#xff0c;当鼠标over到内容部分才会显示&#xff0c;移开鼠标之后滚动条就会隐藏起来&#xff0c;相较于原生的滚动条比较美观。 <el-scrollbar> //将滚动条的内部的内容放在里面即可 </el-scrollbar> 在使用过程中&#xff…

SNMP陷阱监控工具

SNMP&#xff08;简单网络管理协议&#xff09;是网络管理的一个重要方面&#xff0c;其中网络设备&#xff08;包括路由器、交换机和服务器&#xff09;在满足预定义条件时将SNMP陷阱作为异步通知发送到中央管理系统。简而言之&#xff0c;每当发生关键服务器不可用或硬件高温…

microblaze仿真

verdivcs (1) vlogan/vcs增加编译选项 -debug_accessall -kdb -lca (2) 在 simulation 选项中加入下面三个选项 -guiverdi UVM_VERDI_TRACE"UVM_AWARERALHIERCOMPWAVE" UVM_TR_RECORD 这里 -guiverdi是启动verdi 和vcs联合仿真。UVM_VERDI_TRACE 这里是记录 U…

第四十二篇,MATLAB on Linux

最近在Ubuntu上安装了一把MATLAB&#xff0c;以下操作亲测有效。 一、版本 Linux&#xff1a;Ubuntu 18.04 MATLAB&#xff1a;R2021a Linux版&#xff0c;910 MATLAB下载链接&#xff1a;提取码MUYU&#xff0c;感谢大佬无私奉献&#xff01; 二、安装 详细的安装步骤不…

linux高级篇基础理论七(Tomcat)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…

算法题,文本左右对齐

/*** 给定一个单词数组 words 和一个长度 maxWidth &#xff0c;重新排版单词&#xff0c;使其成为每行恰好有 maxWidth 个字符&#xff0c;且左右两端对齐的文本。** 你应该使用 “贪心算法” 来放置给定的单词&#xff1b;也就是说&#xff0c;尽可能多地往每行中放置单词。必…

ubuntu22.04系统更改完resolv.conf后 重启网络服务后resolv.conf被重置

vi /etc/systemd/resolved.conf&#xff0c; [Resolve] DNS8.8.8.8 114.114.114.114 192.168.4.2 2.重启域名解析服务 systemctl restart systemd-resolved systemctl enable systemd-resolved 3.备份当前的/etc/resolve.conf&#xff0c;并重新设置/run/systemd/resolve/res…

Docker 安装 Centos和宝塔

1. 安装centos docker pull centos:centos7 2. 创建docker容器&#xff1a;newbt 代表容器名 docker run -i -t -d --name newbt -p 2000:20 -p 2100:21 -p 8000:80 -p 4430:443 -p 8880:888 -p 8888:8888 -p 38444:38444 -p 2200:22 -p 2300:23 -p 2500:25 -p 3306:3306 -p 6…

c++ 解析zip文件,实现对流式文件pptx内容的修改

libzip 官网地址&#xff1a;示例代码 #include <iostream> #include <cstdlib> #include <cstring> #include <ctime> #include <zip.h>//解析原始zip内容&#xff0c;保存为新的zip文件 int ziptest(const char* inputPath, const char* out…

vue pc官网顶部导航栏组件

官网顶部导航分为一级导航和二级导航 导航的样子 文件的层级 router 文件层级 header 组件代码 <h1 class"logo-wrap"><router-link to"/"><img class"logo" :src"$config.company.logo" alt"" /><i…

直面双碳目标,优维科技携手奥意建筑打造绿色低碳建筑数智云平台

优维“双碳”战略合作建筑 为落实创新驱动发展战略&#xff0c;增强深圳工程建设领域科技创新能力&#xff0c;促进技术进步、科技成果转化和推广应用&#xff0c;根据《深圳市工程建设领域科技计划项目管理办法》《深圳市住房和建设局关于组织申报2022年深圳市工程建设领域科…

K8S集群优化的可执行优化

目录 前期环境优化 1.永久关闭交换分区 2.#加载 ip_vs 模块 3.调整内核参数 4.#使用Systemd管理的Cgroup来进行资源控制与管理 5.开机自启kubelet 6.内核参数优化方案 7.etcd优化 默认etcd空间配额大小为 2G&#xff0c;超过 2G 将不再写入数据。通过给etcd配置 --quo…

IO流(Java)

IO流 在学习IO流之前&#xff0c;我们首先了解一下File File File即文件或文件夹路径对象&#xff0c;其示例类可以是存在路径也可以是未创造路径 File有什么用 用于创建或操作文件或文件夹 File常用API API部分看得懂会查会用即可 IO流 IO(Input 读数据 Output写数据…

Qt/QML编程学习之心得:工程中的文件(十二)

Qt生成了工程之后,尤其在QtCreator产生对应的project项目之后,就如同VisualStudio一样,会产生相关的工程文件,那么这些工程文件都是做什么的呢?这里介绍一下。比如产生了一个Qt Widget application,当然如果Qt Quick Application工程会有所不同。 一、.pro和.pro.user …

企业计算机服务器中了360勒索病毒如何解密,勒索病毒解密数据恢复

网络技术的不断应用与发展&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但随之而来的网络安全威胁也不断增加。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索病毒攻击&#xff0c;导致企业的所有数据被加密&…

游戏策划常用的ChatGPT通用提示词模板

游戏设计&#xff1a;请帮助我设计一个有趣的游戏。 游戏玩法&#xff1a;如何设计游戏的玩法&#xff1f; 游戏机制&#xff1a;如何设计游戏的机制&#xff1f; 游戏平衡&#xff1a;如何平衡游戏中的各种元素&#xff1f; 游戏美术&#xff1a;如何设计游戏的美术风格&a…

『PyTorch学习笔记』如何快速下载huggingface模型/数据—全方法总结

如何快速下载huggingface模型/数据—全方法总结 文章目录 一. 如何快速下载huggingface大模型1.1. IDM(Windows)下载安装连接1.2. 推荐 huggingface 镜像站1.3. 管理huggingface_hub cache-system(缓存系统) 二. 参考文献 一. 如何快速下载huggingface大模型 推荐 huggingface…

希亦洗地机跟追觅洗地机入手哪个更好?追觅跟希亦洗地机深度评估

近年来&#xff0c;洗地机可以同时处理干湿垃圾&#xff0c;同时降低用户在清洁过程中的劳动强度&#xff0c;成为了家居清洁的新宠&#xff0c;但是目前市场上的品牌和型号层出不穷。用户往往很难挑选&#xff0c;本文挑选了两款目前口碑最好的两款洗地机给大家做一个全面的评…