Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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
C++ 如何通过C文件*在Windows中读取Linux或Mac创建的文件?_C++_C_File_Newline - Fatal编程技术网

C++ 如何通过C文件*在Windows中读取Linux或Mac创建的文件?

C++ 如何通过C文件*在Windows中读取Linux或Mac创建的文件?,c++,c,file,newline,C++,C,File,Newline,正如我们在windows EOL中所知道的,是CRLF,在linux中是LF,在Mac中是CR。() 我想写一个程序,它可以读作linux和Mac,也可以在Windows中逐行赢文件。要打开文件,我会在“rt”模式下使用fopen,但我不知道如何读取行。fgets读取到Windows下的CRLF和LF,但我希望它也适用于EOL=CR文件 那么解决方案是什么呢?提前谢谢。只要您以rt模式(读取文本)打开文件,您就可以了。fgets()将返回一行,并将处理平台之间的细微差异。写入文件时,使用“\n”

正如我们在windows EOL中所知道的,是CRLF,在linux中是LF,在Mac中是CR。()

我想写一个程序,它可以读作linux和Mac,也可以在Windows中逐行赢文件。要打开文件,我会在“rt”模式下使用fopen,但我不知道如何读取行。fgets读取到Windows下的CRLF和LF,但我希望它也适用于EOL=CR文件


那么解决方案是什么呢?提前谢谢。

只要您以rt模式(读取文本)打开文件,您就可以了。fgets()将返回一行,并将处理平台之间的细微差异。写入文件时,使用“\n”作为下线,您将获得平台的正确行尾。这就是以文本模式打开文件的原因。如果使用二进制模式,则必须处理软件中所有不同的行尾。

要在“t”模式下打开,文件必须符合正在运行的平台。否则,您只需在二进制模式下打开,然后自己整理差异


C库帮助您编写一个在不同平台上工作大致相同但不支持“交叉阅读”的程序文件。

所以我找不到对我有好处的东西,决定写我自己的
我的fgets
函数,它在主体中使用
fgetc

Linux使用LF而不是CR。MacOS9使用普通CR。是的,你是对的,PiotrLegnica这是完整的列表。@Mihran:MacOSX使用LF。我不敢相信人们仍然认为windows需要CRLF。即使是最新版本的记事本也只接受LF文件!为什么人们仍然编写发出非标准CRLF或CR行结尾的软件?也许你是对的@André,但我希望我的程序能够处理由不同编辑器和不同操作系统创建和编辑的文件。我通过windows中的客户端程序从Linux服务器获取文件。这就是为什么在大多数情况下,我将从中读取的文件都是linux格式的EOL。@Mihran:没关系,差异将由流来处理,所以不用担心。。。除非您想从Windows中编写具有Linux行结尾的文件:)我已经尝试过了。它不起作用:(LF和CRLF在Windows中工作,但CR不起作用。没有在Mac和Linux中尝试过这一点,但确保一切正常。大多数C库都没有实现通常称为“通用换行模式”的功能——如果文件不符合平台的约定,您就不会换行!