在主函数中按行输入10个字符串。用行指针用另一个函数对其从小到大排序,然后在主函数输出
时间: 2024-02-11 13:03:55 浏览: 69
好的,这是一个需要用到字符串数组和指针的排序问题,我可以帮你解答。
下面是一个示例代码,你可以参考一下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
#define STR_NUM 10
void sortStrings(char** strings, int num) {
// 冒泡排序
for (int i = 0; i < num - 1; i++) {
for (int j = 0; j < num - i - 1; j++) {
if (strcmp(strings[j], strings[j + 1]) > 0) {
char* temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
}
int main() {
char* strings[STR_NUM]; // 字符串指针数组
char str[MAX_LEN]; // 用于暂存输入的字符串
// 输入字符串
for (int i = 0; i < STR_NUM; i++) {
printf("请输入第 %d 个字符串:", i + 1);
fgets(str, MAX_LEN, stdin);
str[strlen(str) - 1] = '\0'; // 去掉字符串末尾的换行符
strings[i] = (char*)malloc(strlen(str) + 1); // 动态分配内存
strcpy(strings[i], str);
}
// 排序
sortStrings(strings, STR_NUM);
// 输出排序后的字符串
printf("排序后的字符串为:\n");
for (int i = 0; i < STR_NUM; i++) {
printf("%s\n", strings[i]);
free(strings[i]); // 释放内存
}
return 0;
}
```
这个程序中,我们首先定义了一个字符串指针数组 `strings`,用于存储输入的字符串。然后我们通过 `fgets` 函数从标准输入中逐行读入字符串,并将其存储在 `strings` 数组中。注意,在存储字符串前,我们需要先动态分配内存。
接着,我们调用 `sortStrings` 函数对 `strings` 数组中的字符串进行排序。这里使用的是冒泡排序算法。
最后,在主函数中输出排序后的字符串,并释放动态分配的内存。
希望这个示例代码可以帮助到你。
阅读全文