【发布时间】:2021-11-02 08:12:21
【问题描述】:
我正在尝试将收到的数据包数量写入文本文件:
printf("TCP : %d UDP : %d ICMP : %d IGMP : %d Others : %d Total : %d\r", tcp , udp , icmp , igmp , others , total);
if (usePacketCount == 1){
fprintf(stderr,"Saving packet count");
fprintf(packetCountFile,"TCP : %d UDP : %d ICMP : %d IGMP : %d Others : %d Total : %d\r", tcp , udp , icmp , igmp , others , total);
}
但是,当我尝试读取文本文件时,什么都没有:
我在这里定义我的文件:
FILE *packetCountFile = 0;
if (usePacketCount == 1){
printf("Using Packet Count File");
packetCountFile = fopen("packetCount.txt","w");
}
我不确定为什么会失败。可能是因为写循环,根本跟不上?
【问题讨论】:
-
fopen是成功还是返回NULL? -
请提供一个小而完整的程序来表现这种行为。此外,请检查所有(重要的)I/O 操作是否成功:
fopen()、fprintf()等。另外,请不要使用文本截图;您可以非常轻松地复制相关的文本输出。 -
看起来它确实打印到文件,但由于末尾没有换行符而是回车符,文本编辑器显示存在许多字符但没有一行没有内容。
-
你为什么写
\r而不是\n? 898,964 个字符似乎不是空的。 -
@einpoklum 但是由于没有换行符,文本编辑器没有义务将内容识别为一行文本(假设 POSIX)。由于没有单行,它可能不会显示任何内容。