我是一个完全的初学者,但我正在为学校做一个项目,我似乎无法让它发挥作用。
目标很简单:扫描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]
。您的编译器应该对此进行警告。它还应该警告您不要在类型为char
的abc
内部发送nombres[3]
,即单个char
,而不是%s
格式说明符所期望的字符串。
你需要将参数类型更改为函数,以匹配你传递给它的内容和你使用它的方式
char abc(char nombres[20][20])