gpt4 book ai didi

C 标准输出 printf

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

我在打印数据时遇到了一个奇怪的问题。我使用 printf 打印一个 char* 字符串,然后再打印另一个。然而,第一个字符串的一部分没有被打印出来,当我打印第二个字符串时,第一个字符串的缺失部分被添加到那个字符串之前。这里发生了什么?

我正在编写一个简单的 libpcap 实现。这是将产生相同结果的示例回调函数。我尝试在打印后删除缓冲并添加一个 putchar('\n') 但它没有帮助。

void ParseData(u_char* useless, const struct pcap_pkthdr* pkthdr, const u_char* packet){
int packetLen, i;
packetLen = pkthdr->len;
for (i = 0; i < packetLen; i++){
putchar(packet[i]);
}
}

最佳答案

stdio 缓冲字符。除非您另有说明,否则通常它只会在看到换行符时才实际发出写入。如果您想要不同的行为,可以使用以下一些方法进行补救:

  • 在您的第一个 printf 之后,调用 fflush(stdout); 来刷新缓冲区。

  • 或者,调用 setbuf(stdout, NULL); 来禁用缓冲。在执行任何 printf 之前执行此操作。

  • 通过编码为平台特定的 API,如 write (POSIX) 或 WriteFile (Windows),绕过 stdio。通常我会建议不要这样做,尤其是对于像 stdout..

  • 这样的东西

关于C 标准输出 printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605680/

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