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()函数返回流中的下一个字符。我想为指定条件存储此函数返回的整个流到变量中。
答案 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);
如果您想首先将字符转换为字符串,还可以使用strcat
,strcpy
等。