我正在尝试创建一个函数,通过直接写入stdout流而不是使用printf来在控制台上打印字符串。但问题是for循环只执行一次。这是什么原因?
以下是代码:
int print_string(const char *string, const int buffer_size)
{
int i = 0;
char curr = '\0';
for(i = 0; i < buffer_size; i++) {
printf("([%d] buffer_size: %d) ", i, buffer_size);
printf("%c\n", string[i]);
curr = ungetc(string[i], stdout);
if(curr != string[i]) {
fprintf(stderr, "Error while writing string to stdout.\n");
return -1;
}
}
return 0;
}
PS:printf调用仅用于调试目的。
当我致电print_string("test", 4);
时,我收到以下输出:([0] buffer_size: 4) t
谢谢。
答案 0 :(得分:1)
我想写入stdout
流,但我使用的是ungetc()
,用于输入流。这导致了崩溃。为了解决这个问题,我使用stdout
fwrite((string+i), sizeof(char), 1, stdout);