我正在尝试使用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);
我该如何解决这个问题?
答案 0 :(得分:5)
您需要将输出刷新到stdout:
fflush(stdout);
https://bytes.com/topic/c/answers/629409-fflush-stdout是一个类似的问题
printf
通常会为您提供换行符(如您找到的那样),但如果您没有换行则不行。