gpt4 book ai didi

c - 如何使用 strcmp 对 2d char 数组的行(字符串)进行排序?

转载 作者:行者123 更新时间:2023-11-30 19:51:31 26 4
gpt4 key购买 nike

所以我需要对二维字符数组的行进行排序。如果用户输入:

  1. wxyz
  2. abdf
  3. abcd
  4. lmno
  5. 第一时间

它应该返回

  1. abcd
  2. abdf
  3. lmno
  4. 第一时间
  5. wxyz

    虽然我的排序方法有问题。是否可以不使用指针进行排序,或者应该使用指针?它甚至将所有用户输入存储到 temp 中,这很奇怪,因为它的长度为 5。

       #include <stdio.h>
    #include <string.h>
    void sortStr(char str[5][4]);

    int main()
    {
    char str[5][4];
    int i,r,c;



    //user inputs 5 strings in 2d array.
    for(i=0;i<5;i++)
    {
    printf("\nEnter a string %d: ",i+1);
    scanf(" %[^\n]",&str[i]);
    }

    sortStr(str);
    //display array
    for(r = 0; r<5; r++)
    {
    for(c=0; c<4; c++)
    {
    printf("%c",str[r][c]);
    }
    printf("\n");
    }

    return 0;
    }

    void sortStr(char str[5][4])
    {
    int i, j;
    char temp[5];
    //this sorts each row based
    for(i=0; i<5; i++){
    printf("T1:\n");
    for(j=i+1; j<4; j++)
    {
    printf("T2:\n");
    if(strcmp(str[i],str[j]) > 0)
    {
    //testing where code crashes
    printf("T3:\n");
    strcpy(temp,str[i]);
    printf("T4:\n");
    printf("%s\n",temp);//temp has all user input. How?
    strcpy(str[i],str[j]);//code crashes
    printf("T5:\n");
    strcpy(str[j],temp);
    printf("T6:\n");
    }
    }
    }
    }

最佳答案

像这样使用qsort

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

int main(void){
char str[5][5];//5 for read 4 character + null-terminator
int i;

for(i=0;i<5;i++){
printf("\nEnter a string %d: ", i+1);
scanf(" %4[^\n]", str[i]);
}

qsort(str, 5, sizeof(*str), (int (*)(const void*, const void*))strcmp);

puts("");
for(i=0;i<5;i++){
puts(str[i]);
}

return 0;
}

关于c - 如何使用 strcmp 对 2d char 数组的行(字符串)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42754518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com