You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无printf提示读取用户输入的10个字符串并排序输出?

C语言程序修改方案

针对需求(无输入提示信息、仅输出按字母顺序排序后的字符串),对现有代码做以下3处关键修改:

  • 移除输入提示语句:删除读取字符串时的printf("Enter string #%d: ", i+1);,避免输出额外提示内容
  • 修正排序逻辑:修改compare_strings函数的返回值,将strcmp(*(const char**)b, *(const char**)a)改为strcmp(*(const char**)a, *(const char**)b),实现正序字母排序
  • 优化输出格式(可选):原代码用空格分隔所有字符串,若需每行输出一个排序结果,可将printf("%s ", strings[i]);改为printf("%s\n", strings[i]);,保持输出简洁直观

修改后的完整代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ARRAY_LENGTH 10
#define MAX_STRING_LENGTH 100

int compare_strings(const void *a, const void *b) {
    // 改为正序字母排序的比较逻辑
    return strcmp(*(const char**)a, *(const char**)b);
}

int main() {
    char *strings[ARRAY_LENGTH];
    char input_string[MAX_STRING_LENGTH];
    
    // 读取10个字符串,无任何提示信息
    for (int i = 0; i < ARRAY_LENGTH; i++) {
        fgets(input_string, MAX_STRING_LENGTH, stdin);
        input_string[strcspn(input_string, "\n")] = '\0'; // 移除换行符
        strings[i] = malloc(strlen(input_string) + 1); // 为字符串分配内存
        strcpy(strings[i], input_string);
    }

    // 按字母顺序排序字符串数组
    qsort(strings, ARRAY_LENGTH, sizeof(char*), compare_strings);

    // 输出排序后的字符串,此处采用每行一个的格式
    for (int i = 0; i < ARRAY_LENGTH; i++) {
        printf("%s\n", strings[i]);
        free(strings[i]); // 释放已分配的内存
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者amarveer rehal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:37:37