【发布时间】:2021-12-08 00:55:00
【问题描述】:
我需要为我的词法分析器收集一些字符到缓冲区中,但我不知道如何。我已经阅读了有关 stackoverflow 的一些答案,但这些是不同的情况。我有一个读取下一个字符的 while 循环,我想将逻辑放入其中,以便将新字符附加到内存中的缓冲区。
// init buffer with the first char 'h'
char *buffer = malloc(sizeof(char));
buffer[0] = 'h';
buffer[1] = '\0';
// go through input char by char
while(...)
{
char c = read_next_char();
buffer.append(c) // I whould do in JavaScript, but not in C :(
}
【问题讨论】:
-
开始你需要分配
x的字节数并且每次读取char并将其存储到缓冲区。您还需要注意使用realloc重新调整缓冲区的大小。在您的情况下,您分配单个字节char *buffer = malloc(sizeof(char));并访问buffer[1]或任何其他索引是 UB -
您是要逐个字符地读取 C 类型字符串还是仅读取原始字符数组?
-
看你自己的代码5秒。考虑到您之后对
buffer的处理,malloc 看起来是否正确?我假设你认为 C 有一个字符串类。它没有,它没有的字符串类不是char。 -
在谈论你自己的词法分析器之前,你必须先谈谈什么是字符串和字符。
标签: c char concatenation