你能帮助我理解为什么我的函数不允许我返回一个字符串。我已经查看了这个网站上的一些代码,我似乎无法让它工作。对其他问题的回复表明人们将功能定义为:
const char * stringToRetrun(){ /*do some work*/ return string; }
然而,当我尝试遵循相同的格式时,我的编译器会发出一大堆无效的类型错误/警告。
我在下面发布了我的问题:
char * printMenu()
{
char message[100] = "Select an option from below:\n";
strcat(message, "(1) List all files on server\n");
strcat(message, "(2) Retrieve file from server\n");
strcat(message, "(3) Retrieve all files from server\n");
strcat(message, "(4) Close connection\n");
strcat(message, "Enter your selection:\n");
return message;
}
任何帮助将不胜感激。感谢
答案 0 :(得分:4)
message
函数的末尾不存在printMenu()
的存储(因为它是本地数组)。所以你不能简单地return message
然后能够访问该字符串。这是未定义的行为并且不正确。
在C语言中使用字符串很难处理。您可以:
答案 1 :(得分:0)
这里有两个主要问题: 1.变量消息是本地数组,因此在堆栈上创建。当函数返回时,它返回指向堆栈上已经回滚的地址的指针。