请采取以下措施:
char buffer[512];
memset(buffer, 0, sizeof(buffer));
sprintf(&buffer[0],"This Is The Longest String In the World that in text goes on and..");
printf("Buffer:%s\r\n",buffer);
我希望能够在多行上创建此字符串,以便于进行故障排除和编辑。但是,当我使用\
命令时,我的输出被看似是标签的东西分开了?
示例:
sprintf(&buffer[0],"This Is The\
Longest String In the World\
that in text goes on and..");
产生的输出为:
Buffer:This Is The Longest String In the World that in text goes on and..
有什么想法吗?这只是一种尝试在多行代码中分解字符串的错误方法吗?
答案 0 :(得分:20)
新行继续考虑代码中的任何空格。
您可以利用字符串文字串联来提高可读性:
sprintf(buffer, "This Is The "
"Longest String In the World "
"that in text goes on and..");
使用\
,你需要在第0列开始继续你的字符串:
sprintf(buffer, "This Is The \
Longest String In the World \
that in text goes on and..");
答案 1 :(得分:8)
虽然这可能看起来很迂腐,但在现实世界中我已经被咬了足够多次,以便在其他两个答案中遇到以下问题。
两个帖子的答案忽略了加入单词之间的空格 单独的字符串文字(显然,在第一次测试后)。
如果您的字符串非常长,请使用snprintf()
代替 - 稍微
笨拙,但它告诉任何人你正在检查你的代码
代码维护中常见的危险。
如果您的字符串恰好包含%
,您将收到编译器警告
(好)或随机分段错误(坏)。所以请使用"%s"
或者,或许
在这种情况下,只需strcpy().
(在两个月内,同事可以轻松地在邮件中添加99.9%
。)
我经常看到的使用memset(),
只是货物崇拜
节目。是的,在特殊情况下,需要它,但使用
它一直发错信息。
最后,为什么有人会在&buffer[0]
时使用buffer
会吗?
总而言之,您的代码应该是:
char buffer[512];
snprintf(buffer, sizeof buffer, "%s",
"This is The Longest String "
"In the World that in text "
"goes on and on and on and on ....");
printf("Buffer:%s\r\n", buffer);
答案 2 :(得分:4)
这也会起作用:
char buffer[512];
sprintf(&buffer[0], "This is the longest string"
"in the world that in text"
"goes on and on and on and on ....");
printf("%s\n", buffer);