c - 通过在c中按字母顺序排序二维字符串数组

标签 c sorting multidimensional-array c-strings

我的循环只安排了第一个元素,我尝试放置一个外部循环但它不起作用。我是否需要在我的程序中使用另一个循环或初始化另一个 char 数组 [] 来传输循环?

#include <stdio.h>
int main(void)
{
    char applicants[10][15],temp[15];
    char swap[10][15];
    int apps,i,j,c=0;

    printf("how many applicants?\n");
    scanf("%d",&apps);

    printf("enter the names of the applicants on seperate lines\n");
    printf("in order in which they applied for > ");
    for (i=0;i<apps;i++){
       scanf("%s",applicants[i]);
    }

    printf("\napplication order\n");
    printf("-----------------\n");
    for (i=0;i<apps;i++){
       printf("\t%s\n",applicants[i]);
    }

    for(i=0;i<apps-1;i++){
        c=strcmp(applicants[i],applicants[i+1]);
        printf("\n%d\n",c);
        if(c>0)
            strcpy(temp,applicants[i]);
            strcpy(applicants[i],applicants[i+1]);
            strcpy(applicants[i+1],temp);
    }

    printf("\n\n alphebatize order\n");
    printf("-------------------\n");
    for (i=0;i<apps;i++){
       printf("\t%s\n",applicants[i]);
    }


if(strcmp(applicants[0],applicants[1])>0){
        printf("\n\n%s is greater than %s",applicants[0],applicants[1]);
    }


}

最佳答案

你的 if 语句在这里缺少大括号

if(c>0)
    strcpy(temp,applicants[i]);
    strcpy(applicants[i],applicants[i+1]);
    strcpy(applicants[i+1],temp);

这个意思和

if (c > 0)
 {
    strcpy(temp, applicants[i]);
 }
strcpy(applicants[i], applicants[i + 1]);
strcpy(applicants[i + 1], temp);

所以你正在用 applicants[i + 1] 覆盖 applicants[i] 然后写到 applicants[i + 1]存储在 temp 中的 previous 值,不一定是 applicants[i]

你需要加上大括号

if (c > 0)
 {
    strcpy(temp, applicants[i]);
    strcpy(applicants[i], applicants[i + 1]);
    strcpy(applicants[i + 1], temp);
 }

关于c - 通过在c中按字母顺序排序二维字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29752192/

相关文章:

JavaScript 在二维数组中存储数据

java - 创建多维数组的副本

c++ - 优化稀疏下三角线性系统的反向求解

调用堆栈 - 当一个函数将局部变量的引用返回给调用函数时,随后调用另一个函数

sorting - Spark - 使用 JavaPairRDD 按值排序

javascript - 任何人都可以解释这种关于数组排序的奇怪行为吗?

javascript - 通过分析字符串中的日期详细信息对字符串数组进行排序

c - 树莓派,与串口设备通信

ios - 如何设置 WolfSSL 密码列表?

ios - Swift 中的多维对象数组错误?