我正在尝试执行一些简单的c编程,以返回char值。程序正在运行,没有错误,但是,预期的字符串的输出未出现。我期望它在运行时会返回Halloworld
。
#include <stdio.h>
#include <string.h>
char screen(char c[]);
int main(){
char b[] = "Hallo";
//screen(b);
printf("%s",screen(b));
}
char screen(char c[]){
strcat(c, "world");
return c;
}
答案 0 :(得分:2)
strcat()
的声明返回一个指向char(char *
)的指针。因此,您的函数screen()
也必须如此。
另一件事是,您无法执行char b[] = "Hallo";
,因为字符数组b
仅足以处理Hallo
。您需要大于Hallo
的位置,其余部分将填充0x00
或NUL
。像这样:
48 61 6C 6C 6F 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00
然后strcat()
个字符world
到最后:
48 61 6C 6C 6F 20 77 6F 72 6C 64 00 00 00 00 00 00 00 00 00
0x00
左边的第一个传递给printf()
时将作为空终止符。
#include <stdio.h>
#include <string.h>
char* screen(char c[])
{
strcat(c, "world");
return c;
}
int main()
{
char b[20] = "Hallo ";
screen(b);
printf("%s",b);
return 0;
}