gpt4 book ai didi

c - read() 函数不允许在换行符后打印任何内容

转载 作者:行者123 更新时间:2023-11-30 18:41:25 24 4
gpt4 key购买 nike

我有一个从服务器读取文件并返回数据的函数:

int readMessageFromServer(int fileDescriptor) {
char buffer[MAXMSG];
int nOfBytes;

nOfBytes = read(fileDescriptor, buffer, MAXMSG);
if(nOfBytes < 0) {
perror("Could not read data from server\n");
exit(EXIT_FAILURE);
}
else
if(nOfBytes == 0)
return(-1);
else
printf("Server Message: %s\n", buffer);
return(0);
}

问题出在线路上

printf("Server Message: %s\n",  buffer);

如果我将此行更改为

printf("Server Message: %s\n>",  buffer);

它拒绝打印“>”符号,直到获得更多数据。

这是一个已知的限制还是我做错了什么?

我可能应该补充一点,对此函数的调用如下所示:

while(readMessageFromServer(sock) > 0) {continue;};

最佳答案

除了您可能想在引号内写入 > 之外,您还需要通过调用 fflush(stdout) 来刷新输出缓冲区。缓冲区通常仅在换行符之后刷新。

关于c - read() 函数不允许在换行符后打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505549/

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