我有这个:
char * str = "hahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohoho ";
如何正确格式化,以80列打破?使用:
char * str = "foo
bar";
似乎是一个非常糟糕的主意,它导致了不确定的行为,使strlen()
返回废话值
编辑:这是我在谈论的未定义行为:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *s = "haha
hihi ";
unsigned i = strlen(s);
printf("Length: %in", i);
return 0;
}
imperator@RomaAeterna ~/P/C/undefined> gcc -Wall -Wextra undefined.c
imperator@RomaAeterna ~/P/C/undefined> ./a.out
Length: 14
您可以使用这样的多行:
char* str = "line1"
"line2"
"line3";
例如。将""
视为编译时间串联操作员;实际上,一个字符串的闭合"
与下一个开头"
之间的任何空格都足够。
最佳想法是对此使用预叠式探测器,因为这不使用内存(在嵌入式中很重要):
#define TEXT "jfsdkfnkd jfsn kjdsjkdsf ndjkksnfjkdsnf njdsjkfdnfkjdsfnd
dkf dfhfhjfbdsfhjbffjsbdhfds"
strlen(TEXT);