Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fgets读取超出.csv文件中一行末尾的内容_C_Csv - Fatal编程技术网

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

fgets读取超出.csv文件中一行末尾的内容,c,csv,C,Csv,我有一个Excel文件,它被保存为.csv文件。 在Word或文本编辑器中打开文件时,每个记录都会按预期显示在新行中 现在,我正在使用fgets(line,sizeof line,fp)读取文件 对于fgets,输入行字符串将继续延伸到每个.csv行的末尾之外。然后继续我用sizeof设置的值。但是我需要知道.csv文件中行尾的长度。我做错了什么?可能我需要添加一个新行字符,或者我缺少关于fgets函数的某些内容 如何解决此问题?microsoft产品会使用换行符结尾损坏文本文件。尤其是出类拔萃

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

现在,我正在使用fgets(line,sizeof line,fp)读取文件
对于fgets,输入行字符串将继续延伸到每个.csv行的末尾之外。然后继续我用sizeof设置的值。但是我需要知道.csv文件中行尾的长度。我做错了什么?可能我需要添加一个新行字符,或者我缺少关于fgets函数的某些内容


如何解决此问题?

microsoft产品会使用换行符结尾损坏文本文件。尤其是出类拔萃。它会修改你的文件,特别是所有的换行符,只需打开文件,即使你不保存。(除非他们在过去几年中解决了这个问题……)

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

有一个选择可能会有所帮助。如果要打开文件,请以二进制模式打开它。模式为“rb”或“wb”,而不是“r”或“w”

对于GNU和POSIX,文本模式和二进制模式没有区别,但它可能有助于处理被微软系统破坏的文件


文件的换行格式可能与操作系统的换行格式不匹配(文本编辑器可能会转换,因此您不会注意到)。您是从哪里获得.csv文件的?您使用的是什么操作系统?例如,Windows、MacOS、Linux等?发布第一行或第二行数据的ASCII值有助于识别问题:
For(i=0;iBTW,解决此问题的一种方法是在文本编辑器中打开文件,选择所有内容,并将其复制到剪贴板。然后在文本编辑器中打开一个新文件,粘贴内容,然后保存新文件。希望文本编辑器将以本机换行格式保存新文件。谢谢。该文件首先在Excel中创建,另存为.csv文件。在Word中读取它的格式正确。我将它从Word复制并粘贴到另一个Word文件中,但问题仍然存在。数据文本看起来是从右箭头后开始,到左箭头前结束---->11952Q1,0.0298941,-0.0755348,0.1718174,0.4919604,0.0430902