C 编程 - 如何将 char 写入 char*

标签 c lex

C 中的几个函数确保将字符写入流,例如:

 int fputc ( int character, FILE * stream );
 int putchar ( int character );
 int putc ( int character, FILE * stream );
...

我的问题很简单:是否有任何函数可以将字符写入char*? (回调(int character, char * stream))

更新 :更多地解释我的问题 我正在使用 lex/yacc 编译解决方案。
input() 函数返回流中的下一个字符。我想针对指定条件将此函数返回的整个流存储到一个变量中。

最佳答案

由于指针运算是 C 语言的本质,因此没有这样的函数。要将字符放入 stream 指向的内存中并推进它,您可以这样做:

*stream++ = character;

在下一个序列点 stream 将指向新的、仍未写入的字符。

当然,请确保您不会将 stream 推进到其分配区域的边界之外。为防止这种情况发生,您可以做一个简单的计算:

if (stream - base > BUFFER_SIZE) /* stop */

base 将是一个指向分配区域开始的指针,stream 的初始值。

关于C 编程 - 如何将 char 写入 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614405/

相关文章:

c - C 中的二维数组网格,每个坐标具有不同的字符

c++ - 如何停止对我的 DLL 导出函数的名称修改?

在MinGW(使用MSYS)中为Windows 10编译GTK+-2.0程序

c - 如何在 Yacc 中使特定规则先于其他规则减少?

c - 如何在 Linux 上调试 LEX/FLEX 程序

c - 将文本文件中的行保存到动态字符串数组中

C循环展开优化性能

lex:无法识别的字符串的默认规则

yacc - Lex 正在将 [ 识别为字母字符串而不是字符的一部分

c - 如何删除以下 'implicit declaration of function' 警告?