我正在使用C文件。它们是非常非常大的文件。 我读写这些文件(它们只是格式化的文本文件)。 我不给他们任何延伸; 我只是说fopen("filename","r")
。在不同操作系统下处理C文件
现在文件具有类似
1 line1 100
2 line2 200
.
.
20000 line 20000 14567
问题是我执行它在Mac OS(豹为特定)和内容,当我在另一个O/S打开相同的文件(没有扩展名)( Windows是特定的)程序无法读取文件的内容。 我想这是因为该文件的格式不同。
标准文件格式或扩展名的任何解决方案与其他o/s不冲突?
仅仅因为文件没有扩展名,在Windows中不能打开。你打开它们时出错了吗?读他们?在这种情况下出现什么错误(检查“errno”)?此外,将文件从OSX复制到Windows时,是否以某种方式复制它们,以便获得正确的行结束符(它们在OSX和Windows上有所不同)? – 2012-02-11 19:53:00
操作系统之间的文本格式格式差别很小。你能更具体地说明你是如何在这两个操作系统上“打开”文件的?你是通过在程序中调用fopen还是通过双击该文件? – 2012-02-11 20:13:21
考虑在两个系统上用'fopen(“a”,“rb”);'打开文件。在Windows上,您不会得到正常的CRLF到LF映射(因为没有要映射的CRLF行尾),但是您将能够读取该文件。如果使用'fgets()'或类似的面向行的函数,这种映射的缺失会很重要;如果使用'getc()'或其他面向字节的函数,则无关紧要。 – 2012-02-11 20:25:24