如何在C中的字符串末尾添加"\n"

Nat*_*an 1 c arrays string char

我知道怎么在字符串上做,所以"hello world""hello world\n".但是,如果我有类似的东西char *str = "helloworld".,我想在str的末尾添加\n,我该怎么做呢?

Bar*_*mar 8

你不能这样做.

当你使用

char *str = "helloworld";
Run Code Online (Sandbox Code Playgroud)

str指向无法修改的字符串.除了文字中的字符外,它还没有任何额外的空间,因此您无法扩展其大小.

如果您需要一个str与添加的换行符相同的字符串,则需要先复制一份.

char *newstr = malloc(strlen(str) + 2);
strcpy(newstr, str);
strcat(newstr, "\n");
Run Code Online (Sandbox Code Playgroud)

请记住在长度上添加2:添加换行符为1个字节,尾随空符号为另一个换行符.

请参阅为什么在写入使用"char*s"而不是"char s []"初始化的字符串时出现分段错误?有关使用之间差异的更多信息

char str[] = "helloworld";
Run Code Online (Sandbox Code Playgroud)

char *str = "helloworld";
Run Code Online (Sandbox Code Playgroud)