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