我有一个Excel文件,保存为.csv文件 . 在Word或文本编辑器中打开文件时,每个记录都按预期显示在新行中 .
现在,我正在使用fgets(line,sizeof line,fp)读取文件;使用fgets,传入的行字符串将继续超出每个.csv行的末尾 . 并继续使用sizeof设置的值 . 但是我需要在.csv文件中以行尾结束它的长度 . 我究竟做错了什么?也许我需要添加一个新的行字符或者我错过了关于fgets函数的东西 .
我怎么解决这个问题?
微软产品破损文本文件与换行结尾 . 特别是Excel . 它将逐字地修改您的文件,特别是所有Newline字符,只需打开文件即使您不保存也是如此 . (除非他们在过去几年里已经解决了这个问题......)
您应该完全避免使用Excel处理任何要处理的文件,至少在所有可能的处理完成之前 .
有一个选项可能会有所帮助 . 我们 fopen() 该文件,以二进制模式打开它 . "rb"或"wb"作为模式,而不是"r"或"w" .
fopen()
对于GNU和POSIX,文本和二进制模式之间没有区别,但它可能有助于Microsoft系统正在打败的文件 .
http://www.gnu.org/software/libc/manual/html_node/Binary-Streams.html#Binary-Streams
1 回答
微软产品破损文本文件与换行结尾 . 特别是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