gpt4 book ai didi

c - printf 不会打印可见字符

转载 作者:行者123 更新时间:2023-11-30 18:27:07 29 4
gpt4 key购买 nike

我有一个从 tcp 套接字读取的函数,但是在打印传入消息后,除了换行符之外,由于某种原因,后面的 printf() 中没有打印任何字符。

void listenThread(void* context){ //context is a struct containing some userdata
printf("started listener thread\n");
struct clientdata *clientdata = context;
char* buff[128];
for (;;){
bzero(buff, sizeof(buff));
read(clientdata->sockfd, buff, sizeof(buff));
printf("\r%s", buff);
printf("\n\n[%s]> ", clientdata->username); //the two \n's get printed but the rest after doesn't.
}
}

我完全被难住了,我确信这个问题是显而易见的。谁能指出我正确的方向?

最佳答案

默认情况下,到 stdout 的输出(这是 printf 写入的位置)是行缓冲。这意味着输出实际上被写入终端

  1. 缓冲区已满
  2. 缓冲区显式刷新为 fflush功能
  3. 或者当您打印换行符时

这就是为什么当您打印换行符时它似乎起作用,缓冲区实际上被写入终端。

如果您不想打印换行符,可以使用 fflush(stdout) 显式刷新缓冲区。

<小时/>

你真的应该解决这个数组问题。

关于c - printf 不会打印可见字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59406249/

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