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

时间:2011-12-23 09:41:59

标签: c lex

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

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

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

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

3 个答案:

答案 0 :(得分:2)

为什么不直接访问指针:

*stream = character;

答案 1 :(得分:2)

由于指针算法属于C的本质,因此没有这样的函数。要将一个字符放入stream所指向的某个内存并推进它,你可以这样做:

*stream++ = character;

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

当然,请确保不要超出其分配区域的范围stream。为防止这种情况发生,您可以进行简单的计算:

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

base将指向已分配区域的开头,即stream的初始值。

答案 2 :(得分:1)

当然,如果您需要一个功能,请尝试snprintf

char buffer[BUFFER_SIZE];
char c = 'x';
snprintf(buffer, sizeof buffer, "%c", c);

如果您想首先将字符转换为字符串,还可以使用strcatstrcpy等。