从键盘读入若干字符串,对它们按字母大小的顺序进行排序,然后把排好序的字符串送到磁盘文件中保存。
时间: 2024-03-21 21:42:44 浏览: 86
从键盘输入一串字符,分别统计其中的字母,数字字符和其他[文].pdf
好的,针对您的问题,我可以给出以下的解决方案:
1. 首先,需要从键盘读入若干字符串。可以使用 C 语言中的 fgets() 函数逐行读入字符串,也可以使用 scanf() 函数逐个读入字符串。
2. 接着,需要对读入的字符串进行排序。可以使用 C 语言中的 qsort() 函数进行快速排序,也可以自己实现其他排序算法。
3. 排序完成后,需要把排好序的字符串送到磁盘文件中保存。可以使用 C 语言中的 fopen() 函数打开文件,使用 fputs() 函数将字符串写入文件,最后使用 fclose() 函数关闭文件。
下面是一个简单的示例代码,可以供您参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 比较函数,用于 qsort() 排序
int cmp(const void *a, const void *b)
{
return strcmp(*(const char **)a, *(const char **)b);
}
int main()
{
int n; // 字符串数量
char **str; // 字符串数组
// 读入字符串数量
printf("请输入字符串数量:");
scanf("%d", &n);
// 动态分配字符串数组的内存空间
str = (char **)malloc(n * sizeof(char *));
for (int i = 0; i < n; i++) {
str[i] = (char *)malloc(100 * sizeof(char)); // 假设每个字符串长度不超过 100
}
// 逐行读入字符串
getchar(); // 消耗多余的回车符
printf("请逐行输入字符串:\n");
for (int i = 0; i < n; i++) {
fgets(str[i], 100, stdin);
}
// 对字符串进行排序
qsort(str, n, sizeof(char *), cmp);
// 将排序后的字符串写入文件
FILE *fp = fopen("sorted.txt", "w");
if (fp == NULL) {
printf("无法打开文件!\n");
return 1;
}
printf("排序后的字符串如下:\n");
for (int i = 0; i < n; i++) {
printf("%s", str[i]); // 输出排序结果
fputs(str[i], fp); // 写入文件
}
fclose(fp); // 关闭文件
// 释放内存空间
for (int i = 0; i < n; i++) {
free(str[i]);
}
free(str);
return 0;
}
```
当然,这只是一个简单的示例代码,您可以根据自己的需要进行修改和完善。
阅读全文