簡體   English   中英

無法從c程序編寫的文本文件中讀取數據

[英]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");
}

我不確定為什么會失敗。 可能是因為寫入處於循環狀態,根本跟不上?

首先,始終檢查fopenfprintf的返回值是否失敗。 其次,文本編輯器顯示 0 行和 898964 個字符。 東西。

發生了什么?

提供給fprintf的格式字符串以回車符 ( \r ) 結尾,這會導致fprintf寫入並重復覆蓋第一行。

好的,但為什么第一行沒有出現在文本編輯器中?

這取決於系統和文本編輯器,但可能發生的是文本編輯器顯示文本行。 POSIX 定義一行如下

零個或多個非<newline> 字符加上一個終止<newline> 字符的序列。

由於fprintf沒有打印換行符,因此從技術上講,該文件不包含一行。
一些文本編輯器比其他編輯器更寬松,實際上可能會顯示一些內容。

您的問題: “這可能是由於寫入處於循環中,它根本跟不上?”

如果系統跟不上,您會認為fprintf會失敗或寫入速度很慢。

我該如何解決這個問題?

將回車符 ( \r ) 替換為換行符 ( \n ),這可能是您最初要寫的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM