将文件内容加载到内存中,C

mal*_*ala 2 c file-io fopen

我将处理非常大的文件,我只想将内容部分加载到内存中。所以我想知道命令是否:

 FILE* file=fopen("my/link/file.txt", "r");  
Run Code Online (Sandbox Code Playgroud)

将整个文件内容加载到内存中还是只是指向内容的指针?打开文件后,我用来fgets()逐行读取文件。那么fwrite()呢?我每次写东西时都需要打开和关闭文件,这样它就不会过载或在后台管理吗?

另一件事,是否有一个像“-time”这样的不错的 bash 命令可以告诉我我执行的程序的最大峰值内存?我正在使用 OSx。

Sou*_*osh 5

按照该手册页fopen()

fopen()函数打开名称为 path 指向的字符串的文件,并将流与其关联。

所以,不,它不会将文件的内容加载到内存或其他地方。

要对返回的文件指针进行操作,正如您已经知道的,您需要使用fgets()和family。

另外,一旦你打开文件,得到的指针和不fclose()一样的,你可以使用该指针任意次数写入文件(记得打开文件后追加更多)。您不需要为每次对指针进行的读取和写入而打开和关闭。

另外,FWIW,如果你想来回移动文件指针,你可能会觉得fseek()可以派上用场。

  • fseek() 在这一点上真的很有帮助!非常感谢,我不知道这个方法 (2认同)