无法将字符添加到分配给 ""的字符指针

标签 c pointers char append c-strings

假设我有这段代码

char *string = "";
string += 'A';
string += 'B';
string += 'C';
printf("%s\n", string);

它只是打印一个空行。为什么要这样做?如果我不知道要多长时间,是否有一种简单的方法可以连接从空字符串开始的单个字符?

最佳答案

在这样的语句中

string += 'A';

这里用到了指针运算。字符“A”的内部表示的值被添加到指针 string 的值,结果指针具有无效值,因为它没有指向实际对象。

例如你需要声明一个字符数组

char string[4] = "";

然后您可以将数组的各个元素设置为字 rune 字,例如

int i = 0'
string[i++] = 'A';
string[i++] = 'B';
string[i++] = 'C';
string[i] = '\0';

printf("%s\n", string);

还有你在这个电话中有一个错字

printf("&s\n", string);

如果一个字符数组已经包含了一个像这样的字符串

char string[4] = "AB";

如果您想在字符串末尾追加一个字符,那么您可以使用字 rune 字来编写

size_t n = strlen( string );
string[n] = 'C';
string[n + 1] = '\0';

或者您可以使用字符串文字和标准 C 函数 strcat,例如

strcat( string, "C" );

在任何情况下,字符数组都应有足够的空间来容纳新字符。

关于无法将字符添加到分配给 ""的字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61431919/

相关文章:

c - 在 C 中释放内存

c - 从用户那里获取字符串的更好方法

java 设置字母在一定范围内的循环使用

c - 使用 OpenMP-Tasks 的生产者-消费者

c - 使用带有指针的数组,如何使用选择排序对数字进行排序?

c - 使用浮点转换代码 (%f) 打印整数?

C语言-char[]输出中的 "Weird"个字符

c - 重新分配结构数组会出现错误 - 下一个大小无效

c++ - MaxPairwiseProduct 程序的段错误(核心转储)运行时错误

c - 尝试修改指向数组的指针时出现段错误