【以下回答由 GPT 生成】
我会提供一个解决方案,它基于C语言实现了字符串的输入排序和输出,并使用动态内存来存储字符串。以下是实现此功能的步骤:
scanf()
函数来读取用户输入的任意长度的字符串,并将其存储在一个动态分配的字符数组中。#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STRING_LENGTH 100
char* get_string() {
char* string = (char*) malloc(MAX_STRING_LENGTH * sizeof(char));
if (string == NULL) {
printf("内存分配失败!");
return NULL;
}
printf("请输入一个字符串:");
scanf("%s", string);
return string;
}
qsort()
来实现。int compare_strings(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
void sort_strings(char** strings, int num) {
qsort(strings, num, sizeof(char*), compare_strings);
}
printf()
函数打印每个字符串。void print_strings(char** strings, int num) {
printf("排序后的字符串:\n");
for(int i = 0; i < num; i++) {
printf("%s\n", strings[i]);
}
}
int main() {
int num_strings;
// 获取字符串数量
printf("请输入要排序的字符串数量:");
scanf("%d", &num_strings);
// 分配内存来存储字符串指针数组
char** strings = (char**) malloc(num_strings * sizeof(char*));
if (strings == NULL) {
printf("内存分配失败!");
return 0;
}
// 获取字符串并存储到指针数组中
for(int i = 0; i < num_strings; i++) {
strings[i] = get_string();
}
// 排序字符串
sort_strings(strings, num_strings);
// 打印排序后的字符串
print_strings(strings, num_strings);
// 释放内存
for(int i = 0; i < num_strings; i++) {
free(strings[i]);
}
free(strings);
return 0;
}
这样,我们就实现了通过函数实现字符串的输入排序和输出,并且使用动态内存来存储字符串。
【相关推荐】
如何通过用三个函数实现字符串的输入排序和输出并在主函数调用,在输入函数使用内存的动态存放@CSDN-Ada助手