簡體   English   中英

fgets在.csv文件中的行末尾讀取

[英]fgets reads beyond the end of a line in a .csv file

我有一個來自Excel的文件,該文件另存為.csv文件。 在Word或文本編輯器中打開文件時,每條記錄將按預期顯示在新行中。

現在,我正在使用fgets(line,sizeof line,fp);讀取文件;
使用fgets,傳入的行字符串將繼續超出每個.csv行的末尾。 並繼續使用我用sizeof設置的值。 但是我需要在.csv文件中具有行尾的長度。 我究竟做錯了什么? 也許我需要添加一個換行符,或者我缺少有關fgets函數的內容。

我怎么解決這個問題?

微軟產品以換行符結尾的文本文件。 尤其是Excel。 即使您不保存文件,它也僅通過打開文件即可從字面上修改您的文件,尤其是所有換行符。 (除非他們在過去幾年中已解決此問題...)

您應該完全避免對要處理的任何文件使用Excel,至少要等到所有可能的處理完成為止。

有一種選擇可能會有所幫助。 fopen()文件后,以二進制模式打開它。 “ rb”或“ wb”作為模式,而不是“ r”或“ w”。

對於GNU和POSIX,“文本”和“二進制”模式之間沒有區別,但是對於被Microsoft系統打敗的文件可能會有所幫助。

http://www.gnu.org/software/libc/manual/html_node/Binary-Streams.html#Binary-Streams

暫無
暫無

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

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