用fopen函数打开文件时,文件应该放在哪

时间:2022-10-25 22:43:30
#include <stdio.h>
#include<stdlib.h>

int main (void)
{
    char ch;
    FILE *fp;
    char fname[20];

    printf("enter the file name:");
    scanf("%s",fname);
    fp = fopen(fname,"r");
    if(fp == NULL)
    {
        printf("Fail to open file\n");
        exit(1);
    }
   while((ch = getc(fp)) != EOF)
        putchar(ch);
    fclose(fp);

    return 0;
}

就像这个程序,我想打开一个文件,但是总是显示打开失败

11 个解决方案

#1


﹉windows的路径是双斜杠
c:\\a.txt

#2


﹉windows的路径是双斜杠
c:\\a.txt

#3


程序当前目录下.
如果是在 VC 里面运行的, 这个目录是工程的目录. 如果是双击 exe 运行的, 这个目录就是 exe 所在的目录.

#4


全路径或者绝对路径

#5


 //fp = fopen(fname,"r");
 fp = fopen(”文件路径“,"r+");

#6


windows下.放在该工程目录下的debug目录即可.
linux下.只要放在源代码目录下就可以了.

#7


fp = fopen(”文件路径“,"r+");
windows:文件路径形式为 X:\\xx.txt
linux:文件路径形式为 dir/xx.txt 或者../../xx.txt 之类

#8


引用 1 楼 lgbxyz 的回复:
﹉windows的路径是双斜杠
c:\\a.txt

作为输入只要输入一个反斜杠吧?

#9


linux和windows下均测试通过啊,LZ是文件路径输错了吧。。
如果用相对路径,那一般是可执行文件那个目录下,
如果用绝对路径那就比较好。

#10


这样写会不会出现问题?
你应该指定一个路径,用粘连的方法

#11


打开失败的原因是文件不存在吧。建议你若打开失败,打印一下出错原因:
fprintf(stderr, "open file error: %s", strerror(errno));

别忘了添加头文件:#include <string.h>和#include <errno.h>

#1


﹉windows的路径是双斜杠
c:\\a.txt

#2


﹉windows的路径是双斜杠
c:\\a.txt

#3


程序当前目录下.
如果是在 VC 里面运行的, 这个目录是工程的目录. 如果是双击 exe 运行的, 这个目录就是 exe 所在的目录.

#4


全路径或者绝对路径

#5


 //fp = fopen(fname,"r");
 fp = fopen(”文件路径“,"r+");

#6


windows下.放在该工程目录下的debug目录即可.
linux下.只要放在源代码目录下就可以了.

#7


fp = fopen(”文件路径“,"r+");
windows:文件路径形式为 X:\\xx.txt
linux:文件路径形式为 dir/xx.txt 或者../../xx.txt 之类

#8


引用 1 楼 lgbxyz 的回复:
﹉windows的路径是双斜杠
c:\\a.txt

作为输入只要输入一个反斜杠吧?

#9


linux和windows下均测试通过啊,LZ是文件路径输错了吧。。
如果用相对路径,那一般是可执行文件那个目录下,
如果用绝对路径那就比较好。

#10


这样写会不会出现问题?
你应该指定一个路径,用粘连的方法

#11


打开失败的原因是文件不存在吧。建议你若打开失败,打印一下出错原因:
fprintf(stderr, "open file error: %s", strerror(errno));

别忘了添加头文件:#include <string.h>和#include <errno.h>