"); While 1 { if ((int c = read(STDIN_FILENO, in-6ren">
gpt4 book ai didi

c - 为什么 read 不起作用但 fgets 在我的程序中工作正常?

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:00 25 4
gpt4 key购买 nike

所以我程序的特定部分如下所示:

printf("Please input command:\n>");
While 1 {
if ((int c = read(STDIN_FILENO, input, Buffer_size) == 0) {
break;
}
rest of the program uses strtok to break the input
down and store in array. Then pass it to a function which checks for
various commands and prints whatever was the command
suppose to do or gives syntax error for incorrect commands

printf(">"); //last line

}

下面是发生的事情:

Please input command:
addperson Batman
>person added
blahblah
Error: incorrect syntax

出于某种原因,它没有打印:“>”。之后每次我输入任何内容时,即使使用正确的命令,它也总是说同样的话。

但是如果我使用这个:

printf("Please input command:\n>");
while 1 {
if (fgets(input, Buffer_size, stdin) == NULL) {
break;
}
...
printf(">");

}

我得到:

Please input command:
> add_person Batman
person added
> blahbagwa
Incorrect syntax
> add_person Superman
person added

请注意“>”是如何出现在每个输出中的?我真的不知道为什么 read 不能正常工作;也许我对阅读的理解不是很好。有人知道吗?

最佳答案

read() 将阻塞,直到它收到足够的输入以填充整个缓冲区,而 fgets() 将为每个输入的行返回一个缓冲区。

关于c - 为什么 read 不起作用但 fgets 在我的程序中工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com