【发布时间】:2015-10-07 00:26:57
【问题描述】:
我是一名初级程序员,正在从事一个项目,该项目需要我的代码从输入文件中读取字符,在不更改原始文件的情况下对其进行操作,然后将修改后的版本打印到输出文件中。为此,我需要在程序中的某个位置使用fopen() 函数,但我很好奇:这里到底发生了什么?输入文件的内容是否复制到变量input1中?
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *input1;
input1 = fopen(argv[1], "r");
return 0;
}
【问题讨论】:
-
不,它只是打开文件进行读取,复制内容使用
fread或fgets,不要忘记最后fclose。 -
请阅读 C 书籍或教程。这些将回答您的问题,并且您最终会遇到更多问题。这里的规则要求你在问这里之前自己做一些研究。
-
仅供参考,一些C standard libraries 是free software,例如musl-libc(或 GNU
libc)用于 Linux(我建议在学习 C 时使用)。你可以研究他们的源代码。它们建在syscalls之上 -
除了使用
input1作为文件读取函数的参数(参见下面的答案),您必须在使用它之前检查它是否具有有效值,以确保文件实际已打开。如if (input1 == NULL) exit(1)。 -
FILE *input1定义了一个指针。失败时返回的指针值NULL是一个定义的值,表示“无值”。这与根本没有设置值的指针相反,它是“未定义的”。当传递一个NULL值指针时,一些函数会优雅地失败,但传递一个未定义的值几乎总是会让天塌下来。文件处理函数甚至不喜欢NULL指针。
标签: c command-line-arguments fopen