[英]Can't read data from text file written by c program
我正在尝试将收到的数据包数写入文本文件:
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
和fprintf
的返回值是否失败。 其次,文本编辑器显示 0 行和 898964 个字符。 这是东西。
发生了什么?
提供给fprintf
的格式字符串以回车符 ( \r
) 结尾,这会导致fprintf
写入并重复覆盖第一行。
好的,但为什么第一行没有出现在文本编辑器中?
这取决于系统和文本编辑器,但可能发生的是文本编辑器显示文本行。 POSIX 定义一行如下
零个或多个非<newline> 字符加上一个终止<newline> 字符的序列。
由于fprintf
没有打印换行符,因此从技术上讲,该文件不包含一行。
一些文本编辑器比其他编辑器更宽松,实际上可能会显示一些内容。
您的问题: “这可能是由于写入处于循环中,它根本跟不上?”
如果系统跟不上,您会认为fprintf
会失败或写入速度很慢。
我该如何解决这个问题?
将回车符 ( \r
) 替换为换行符 ( \n
),这可能是您最初要写的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.