编写一个函数,当作为bubble_string(s)调用时,会对字符串s中的字符进行冒泡排序。如果s包含字符串“xylophone”,则以下语句应该导致打印ehlnoopxy。
我得到的错误是:10.4.c:在函数main':
10.4.c:3: warning: data definition has no type or storage class
10.4.c: In function
main'中:
10.4.c:8:错误:“char”之前的语法错误
10.4.c:在函数`bubble_string'中:
10.4.c:17:错误:')'令牌之前的语法错误
10.4.c:18:错误:')'令牌
有关如何解决此问题的任何想法?
代码:
#include <stdio.h>
void swap (char*, char*);
bubble_string(char s[]);
int main(void)
{
char *s= "xylophone";
printf("%s", bubble_string(char *s));
return 0;
}
bubble_string(char s[])
{
char i, j, n;
n = strlen(s);
for(i = 0; i < n - 1; ++i)
for(j = n - 1; j > 0; --j)
if(s[j-1] > s[j])
swap(&s[j-1], &s[j]);
}
答案 0 :(得分:1)
在其他问题中,您声明bubble_string
没有返回值(通过给它返回类型void
),然后您继续在printf
语句中使用它,就好像它返回了一个值。 (至少在你的编辑之前看起来是这样......现在你的方式,它将默认返回一个int,但你使用它就好像它是一个字符串,你实际上没有从{{返回任何东西) 1}}。)
此外,您的bubble_string
循环语法也是如此。外环可能应该是
更像是:
for
答案 1 :(得分:0)
你的bubble_string函数需要返回一个char *。否则它会向printf返回一个void,这会导致你的错误(因为printf需要一个char *)。
答案 2 :(得分:0)
如果你在printf()中使用它,你的bubble_string()函数需要返回一个char *。