假设我有这段代码
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/