当我尝试通过冒泡排序算法对字符串进行排序时,我在输出中看不到任何字符串,而只看到一个字符串

问题描述 投票:0回答:1

这是我的代码:

int main(int argc, char **argv) {
    int numberOfStrings, remaining;
    printf("Input number of strings:");
    scanf("%d", &numberOfStrings);
    // equalizing remaining check count for bubble sort algorithm
    remaining = numberOfStrings - 1; // strCount - 1 is adequate for bubble sort element count
    char strings[numberOfStrings][50], temp[50];
    int count = 0, cmp;
    
    printf("Input string %d:", numberOfStrings);
    
    for (int i = 0; i < numberOfStrings; i++)
        scanf("%s", strings);
    while (remaining != 0) {
        // bubble sort
        cmp = strncmp(strings[count], strings[count+1], sizeof(strings[count]-1));
        if (cmp > 0) {
            strncpy(temp, strings[count], sizeof(temp)-1);
            strncpy(strings[count], strings[count+1], sizeof(strings[count]-1));
            strncpy(strings[count+1], temp, sizeof(temp)-1);
        }

        count++;
        --remaining;
    }
    printf("\n--------------------------------------------\n\n");

    for(int i = 0; i < numberOfStrings; i++)
        printf("%s\n", strings[i]);
    return 0;
}

xx

控制台:

Input number of strings:3
Input string 3:ddddddddddd
vvvvvvvvvvv
bbbbbbbbbb

--------------------------------------------

bbbbbbbbbb

□□
c bubble-sort strncpy strncmp
1个回答
0
投票

您在同一位置读取所有字符串:而不是

scanf("%s", strings)
,您应该写:

    for (int i = 0; i < numberOfStrings; i++)
        scanf("%49s", strings[i]);
© www.soinside.com 2019 - 2024. All rights reserved.