首页 文章

fgets读取超出.csv文件中一行的末尾

提问于
浏览
0

我有一个Excel文件,保存为.csv文件 . 在Word或文本编辑器中打开文件时,每个记录都按预期显示在新行中 .

现在,我正在使用fgets(line,sizeof line,fp)读取文件;
使用fgets,传入的行字符串将继续超出每个.csv行的末尾 . 并继续使用sizeof设置的值 . 但是我需要在.csv文件中以行尾结束它的长度 . 我究竟做错了什么?也许我需要添加一个新的行字符或者我错过了关于fgets函数的东西 .

我怎么解决这个问题?

1 回答

  • 0

    微软产品破损文本文件与换行结尾 . 特别是Excel . 它将逐字地修改您的文件,特别是所有Newline字符,只需打开文件即使您不保存也是如此 . (除非他们在过去几年里已经解决了这个问题......)

    您应该完全避免使用Excel处理任何要处理的文件,至少在所有可能的处理完成之前 .

    有一个选项可能会有所帮助 . 我们 fopen() 该文件,以二进制模式打开它 . "rb"或"wb"作为模式,而不是"r"或"w" .

    对于GNU和POSIX,文本和二进制模式之间没有区别,但它可能有助于Microsoft系统正在打败的文件 .

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

相关问题