C - 为什么我的字符串 return 在发送到函数时为空?

C - Why does my string return Null when sending it to a function?

我完全是个初学者,但我正在为学校做一个项目,但我似乎无法让它工作。

目标很简单:扫描 5 个字符串,计算它们的元音,然后使用函数按字母顺序排序。

我已整理出元音部分,但是当我将已扫描的字符串发送到我的函数时,它被读取为 null,因此我无法在那里对其进行排序。

我将向您展示非常简化的代码,这样我就可以更轻松地突出问题(不使用冒泡排序):

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

char abc(char nombres[])
{
    printf("\n%s", nombres[3]);
}
int main()
{
    char nombres[20][20];
    printf("Ingrese 5 nombres:\n")

    for (int i = 0; i < 5; i++)
    {
        scanf(" %s", nombres[i]);
    }
    
    abc(nombres);

    return 0;
}

在我的想象中,它应该显示扫描的第三个输入,但输出显示为:

Ingrese 5 nombres
juan
alberto
lautaro
milo
beatriz

(Null)

希望您已经发现了问题,如果是,请帮助我更正我的代码。 剩下的我可以发给你,为了简单起见,我只是把它剪掉了。

您传递给函数的内容与参数类型不兼容。

该函数需要一个 char [] 类型的参数,它作为函数参数与 char * 完全相同。您传递给它的是 char [20][20]。你的编译器应该已经警告过你了。它还应该警告您在类型为 charabc 内部发送 nombres[3],即单个 char 而不是像 %s 格式说明符那样的字符串期待。

您需要将参数类型更改为函数以匹配您传递给它的内容以及您如何使用它。

char abc(char nombres[20][20])