好吧,所以我是一个通常写Java/C++的人,我才开始写C。我目前正在写一个词法分析器,我无法忍受字符串在C中的工作方式,因为我不能执行字符串算术。所以这是我的问题:
char* buffer = "";
char* line = "hello, world";
int i;
for (i = 0; i < strlen(line); i++) {
buffer += line[i];
}
我如何在 C 中做到这一点?由于上面的代码不是有效的 C,我该怎么做呢?
基本上,我循环遍历字符串 line
,并尝试将每个字符附加到 buffer
字符串。
最佳答案
字符串文字在 C 中是不可变的。修改一个会导致未定义的行为。
如果您使用足够大的 char
array(您的缓冲区)来容纳您的字符,您仍然可以修改其内容:
#include <stdio.h>
int main(void) {
char * line = "hello, world";
char buffer[32]; // ok, this array is big enough for our operation
int i;
for (i = 0; i < strlen(line) + 1; i++)
{
buffer[i] = line[i];
}
printf("buffer : %s", buffer);
return 0;
}
关于c - 将数组中的字符追加到 char 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749533/