我有这个:
char * str = "hahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohohohahahahahihihihihohohoho\0";
我该如何正确设置其格式,以80列结尾? 使用:
char * str = "foo\
bar";
似乎是一个非常糟糕的主意,它导致未定义的行为,使strlen()
返回废话值
编辑:这是我正在谈论的未定义行为:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *s = "haha\
hihi\0";
unsigned i = strlen(s);
printf("Length: %i\n", i);
return 0;
}
imperator@RomaAeterna ~/P/C/undefined> gcc -Wall -Wextra undefined.c
imperator@RomaAeterna ~/P/C/undefined> ./a.out
Length: 14
答案 0 :(得分:5)
您可以使用多行,例如:
char* str = "line1"
"line2"
"line3";
例如。将""
视为编译时串联运算符;实际上,一个字符串的结尾"
与下一字符串的开头"
之间的任何空格都足够。
答案 1 :(得分:-2)
最好的想法是对此使用预处理程序,因为这不使用内存(在嵌入式系统中很重要):
#define TEXT "jfsdkfnkd jfsn kjdsjkdsf ndjkksnfjkdsnf njdsjkfdnfkjdsfnd\
dkf dfhfhjfbdsfhjbffjsbdhfds"
strlen(TEXT);