[英]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.