仅用于循环执行一次

时间:2014-05-16 13:36:12

标签: c

我正在尝试创建一个函数,通过直接写入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

谢谢。

1 个答案:

答案 0 :(得分:1)

我想写入stdout流,但我使用的是ungetc(),用于输入流。这导致了崩溃。为了解决这个问题,我使用stdout

写信给fwrite((string+i), sizeof(char), 1, stdout);