从函数返回字符串....限制?
我wondeirng我的代码从函数返回字符串....限制?
char* usage()
{
static char errors[] = {"Sorry Invalid Option entered\nPlease Enter an appropriate option"};
return errors;
}
我已经正确调用的函数这个特殊的包裹和它做什么,我想它。然而就在我这样做的时候......我得到了很多错误。
char* usage()
{
static char errors[] = {"Sorry Invalid Option entered\n
Please Enter an appropriate option"};
return errors;
}
我所做的只是把第二行放在下面一行我得到的错误。现在,我想知道的是两者之间的区别是什么?我似乎有两个字符数组输入相同的参数。是否因为我没有为数组使用malloc空间?
C和C++不支持多行文字是这样,但你可以这样做:
char* usage()
{
static char errors[] = {"Sorry Invalid Option entered\n"
"Please Enter an appropriate option"};
return errors;
}
注意额外的报价!
要添加:这是因为预处理器将相邻的字符串文字连接成一个。 (当然忽略空白的邻接。) – GManNickG 2013-03-21 19:19:36
啊,我明白了。这就是C++专用的东西。谢谢! – PresidentRFresh 2013-03-21 19:21:42
@PresidentRFresh:这对C也有效,我澄清了答案。 – 2013-03-21 19:25:18
在C(我不知道C++),你可以通过使用一个事实,即报价在连接字符串(此串联由预处理完成)
char test[] = "one " "two" " " "<= that's a space :)" "\n"
"three and four\n"
"five etc and so on\n"
"\n"
"for ever and ever ...\n";
注写几行字符串:除了最后一行以外没有分号。
谢谢我不知道这件事。 – PresidentRFresh 2013-03-21 19:29:53
你想要字符串中的所有空格吗? – 2013-03-21 19:18:09