【发布时间】:2019-02-08 01:04:39
【问题描述】:
我正在尝试做一些简单的 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;
}
【问题讨论】:
-
那个程序还能编译吗?您似乎正在尝试从
char[]到char的隐式转换,我预计会出现编译时错误。 -
更重要的是:
b是一个常量对象,没有足够的空间来添加更多数据,这意味着这个程序是未定义的行为,任何事情都可能发生,什么都没有。 -
是的,程序已编译,但它在'screen'函数警告中给出这样的警告:return make integer from pointer without a cast [-Wint-conversion]
-
这是一个非常重要的警告! (并且您可能应该使用
-Wall -Werror或编译器中的任何等效项进行编译:不要只是忽略这样的编译器警告。)如果您不理解该警告,那么这本身就是一个好问题(但我很确定它已经在这里某个地方被彻底询问和回答了)。 -
@WanAfifiWanZain 我的回复能解决你的问题吗?欢迎提出更多问题。
标签: c