在C中实现getchar

时间:2016-07-05 09:09:29

标签: c

我正在尝试使用gecthar来实施read,问题是当my_getchar()使用printf我的函数在printf之前执行时。< / p>

#ifndef BUFF_SIZE
#define BUFF_SIZE 1023
#endif

int my_getchar(void)
{
    static char buff[BUFF_SIZE];
    static char *chr;
    int         ret;

    if ((ret = read(STDIN_FILENO, buff, BUFF_SIZE)) > 0)
    {
         chr = buff;
        return (*chr);
    }
    return (EOF);
}

main()

char c;

printf("Enter character: "); // if I put '\n' line here, it works fine
c = my_getchar();

printf("Character entered: ");
putchar(c);

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

您需要将输出刷新到stdout:

fflush(stdout);

https://bytes.com/topic/c/answers/629409-fflush-stdout是一个类似的问题

printf通常会为您提供换行符(如您找到的那样),但如果您没有换行则不行。