【发布时间】:2012-03-03 20:23:37
【问题描述】:
我正在处理 C 中的文件。它们是非常非常大的文件。
我读写这些文件(它们只是格式化的文本文件)。
我不给他们延期;
我只是说fopen("filename","r")。
现在一个文件的内容类似于
1 line1 100
2 line2 200
.
.
20000 line 20000 14567
问题是我在 Mac OS(特别是 Leopard)中执行它,当我在另一个 o/s(特别是 Windows)中打开相同的文件(无扩展名)时,程序无法读取文件。 我想这是因为文件的格式不同。
对于标准文件格式或扩展名不与其他操作系统冲突的任何解决方案?
【问题讨论】:
-
只是因为文件没有扩展名,在 Windows 中是不可打开的。打开它们时是否出错?读他们?在这种情况下会出现什么错误(检查
errno)?此外,在将文件从 OSX 复制到 Windows 时,您是否以某种方式复制它们以便获得正确的行尾(它们在 OSX 和 Windows 上有所不同)? -
文本格式的格式在操作系统之间差别很小。您能否更具体地说明您如何在两个操作系统上“打开”文件?您是在程序中调用
fopen还是双击文件? -
考虑在两个系统上使用
fopen("a", "rb");打开文件。在 Windows 上,您不会获得正常的 CRLF 到 LF 映射(因为没有要映射的 CRLF 行尾),但您将能够读取文件。如果您使用fgets()或类似的面向行的函数,那么缺少映射会很重要;使用getc()或其他面向字节的函数都没关系。 -
1.不,我在打开时没有收到任何错误。2.文件是由程序直接创建的。3是的,我用 fopen() 打开 3.我使用 fscanf 来读取上述格式化的内容.在我的程序中的某个时刻,我将生成一个文件,然后程序使用它并继续生成另一组文件,它们在其他地方使用,在 OSX 中,所有文件都被正确制作和使用,但在 Windows 中,文件被制作但由于对于某些未知行为,程序不会读取预期的格式并生成空文件(无用)
标签: c file text operating-system format