我正在用C编写一个解析器,我有一些看起来像这样的代码:
char *consume_while(parser *self, int(*test)(char)) {
char *result;
while (eof(self) && (*test)(next_char(self))) {
// append the return value from the function consumed_char(self)
// onto the "result" string defined above.
}
return result;
}
但是我对C的整个字符串操作方面都不熟悉,那么如何将函数consumed_char(self)
返回的字符追加到result
char指针?我见过人们使用strcat
函数,但是它不会工作,因为它需要两个常量的char指针,但我正在处理char *和char。在java中它会是这样的:
result += consumed_char(self);
C中的等价物是什么? 谢谢:))
答案 0 :(得分:0)
在C中,字符串不作为类型存在,它们只是具有空终止字符的char
数组。这意味着,假设您的缓冲区足够大并且用零填充,它可以简单如下:
result[(strlen(result)] = consumed_char(self);
如果没有,最好的办法是使用strcat
并更改consumed_self
功能以返回char *
。
话虽如此,编写一个没有基本理解C风格字符串的解析器,至少可以说是非常雄心勃勃。