簡體   English   中英

逐行讀取文本文件並將每行保存在緩沖區中,而不管每行的數據類型和長度

[英]Read a text file line by line and save each line in the buffer irrespective of data type and length of each line

我想讀取文本文件的一行,將其保存到緩沖區,通過udp套接字發送緩沖區,然后繼續閱讀第二行,依此類推。

到目前為止,因為我知道要從文本文件中讀取的文本的數據類型,所以我一直在使用

fscanf()函數

從文本文件中讀取每一行。 但現在我不知道數據類型,因此我不再使用此功能。 還有其他方法可以逐行讀取文本文件。

注意: 每行的長度可能會有所不同。

在不知道數據類型的情況下,你永遠無法知道你將要讀入變量的內容......讓我們看一下,你提到每行的長度可能會有所不同,對嗎? 所以我們可以假設你的文本文件包含...文本。 也就是說,數字128不會由單個整數表示,而是由您將讀取的三個字符表示,然后解析為整數。

也就是說,除了構建一個解析器之外沒有很多選擇(你讀取每一行並嘗試根據你讀過的字符來猜測它是什么,比方說,只有數字嗎?是否只有數字但是有一個點?是否只有az字符?,它們都是?)不是100%可靠或只是嘗試事先總是知道數據類型(比如,保存從數據類型的每一行讀取的第一個字符)在寫文件時)。

如果您的文本文件不是真正的文本文件,而是二進制模式,則會發生一個非常不同的故事。 如果是這樣的話......好吧,除了事先知道數據類型之外沒什么可做的。

這是一個方便的代碼,我發現將數據讀取為二進制

FILE *fp;
fp=fopen("c:\\test.bin", "r");
char *x = new char[10]; 
//size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE      *a_file);
fread(x, sizeof(x[0]), sizeof(x)/sizeof(x[0]), fp);

暫無
暫無

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

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