【发布时间】:2017-03-26 20:33:17
【问题描述】:
我想在另一个目录中创建一个文件,而不是原始程序的保存位置。
FILE * fp;
fp=fopen("a.txt","w");
但我想更改创建/写入文件的目录。
【问题讨论】:
-
在 Linux 和 POSIX 上,阅读 chdir(2)。但请先阅读advancedlinuxprogramming.com
标签: c directory file-handling
我想在另一个目录中创建一个文件,而不是原始程序的保存位置。
FILE * fp;
fp=fopen("a.txt","w");
但我想更改创建/写入文件的目录。
【问题讨论】:
标签: c directory file-handling
这取决于您使用的操作系统类型。
如果您使用的是 Linux 或类似系统,并且您想在目录 /home/username/folder 中创建文件(假设您在该目录中具有写入权限),您可以简单地这样做:
FILE * fp;
fp=fopen("/home/username/folder/a.txt","w");
如果你使用的是Windows,并且你想在C:\Users\username\folder创建一个文件(假设有写权限),你可以这样做:
FILE * fp;
fopen("C:\\Users\\username\\folder\\a.txt", "w");
请注意,在 Windows 平台上,您必须对路径的 \ 字符进行转义,因为当我们在字符串中包含 \(反斜杠)时,它会被解释为转义序列并与下一个字符隐式关联,例如 \n 或 \t。但是由于我们没有使用任何转义序列,并且想要一个实际的\,我们必须为其插入一个转义序列\\。
正如@stark 所指出的,我们还可以使用/(正斜杠)代替\\ 来表示字符串内的路径。
【讨论】:
一般fopen 的语法如下:
fopen("path/to/file", ...)
如果只给出了一个名称,则假定它与可执行文件位于同一文件夹中。因此,如果您想在另一个文件夹中执行操作,您应该像这样放置该文件夹的路径:
fp = fopen("<path>/a.txt", "w");
【讨论】: