c - 将数组中的字符追加到 char 指针

标签 c c-strings string-literals

好吧,所以我是一个通常写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/

相关文章:

android - 添加到 JNI 固定数组引用表失败(1024 个条目)

c++ - typeid ("") != typeid(const char*)

escaping - Kotlin - 换页符 - 非法转义 : '\f'

c++ - 宏定义中预处理器标记周围有两个双引号

c - 如何找到C程序的 "exit"

c - 如何检查gtk按钮是否按下

Linux共享库实现的困惑

c - 写入 c 字符串

c - Printf 在 Ubuntu 中不工作

c - 如何将一个变量的字符串分配给另一个变量?