最近正在学习文件的输入输出。 书上写的我不太清楚。 接下来,在写代码的时候出现了一个小问题。 主要使用fopen时,总是创建新文件,而不是打开我指定的文件。 现在清楚了。 根据自己的理解,写文章并记录。
首先,文件路径分为绝对路径和相对路径。 传球很难出错,但不容易。 相对路径是当前源文件所在目录的相对路径,比绝对路径更简单。 此外,如果外部文件夹位置发生更改,则不需要更改相对路径,但需要绝对路径。
绝对路径什么都没说。 完整地写下整个路径就好了。 如果你觉得相对路径很难写,可以采用绝对路径。 请看相对路径:
/表示层次关系。 表示当前节点,即源文件所在的文件夹,有时也可以不写。 …表示当前节点的父节点看几个例子就更直观了。
假设我创建了一个名为D:SWS的txt文件。 源文件位于D:SWSC.vscode中
1.使用绝对路径
FP=fopen(d:/SWS/F1.txt ),) w );2.使用相对路径
我先放几个我最开始犯的错误
错例1
FILE *fp FP=fopen('F1 ',' w ' ); 或者
FP=fopen('./f1 ',' w ' ); 这两个是一样的。 直接写文件名时,缺省情况下从源文件所在的文件夹开始查找。
这两个人的结果是,在我包含源文件的. vscode文件夹中创建了一个新文件(未指定类型)。 由于多个不同类型的文件可能具有相同的名称,因此必须使用后缀表示要打开的文件。
错例2
FP=fopen(F1.txt ),) w ); 虽然添加了后缀,但是在. vscode中创建了新的文件,但这次新创建的是txt文件。 所以,直接写文件名时,缺省情况下会查找源文件所在的文件夹。 因为两个文件如果位置不同,可以是相同的名称也可以是相同的类型。
正例
FP=fopen () ././F1.txt ),) w ); 一个. /位于当前节点的父节点,即D:/SWS/C,再加上一个. /则位于D:/SWS。
备注菜鸡学c的一点记录。 这恐怕是很多人都没有的问题,如果有你的帮助或问题,欢迎评论!
(2021/8/17,我又读了这篇文章,觉得那个时候很差劲,做了一些修改。 )