我正在尝试打开一个文件(在ubuntu上),其路径位于变量path
中。但是当我尝试将路径传递给fopen()
时,它无法找到该文件。
这是一段代码
char path="./client.c";
FILE *fp;
if((fp=fopen(path,"r"))==NULL)
printf("file could not be opened\n");
尽管如此,如果我直接通过该路径它可以正常工作。以下代码工作正常。
FILE *fp;
if((fp=fopen("./client.c","r"))==NULL)
printf("file could not be opened\n");
我做错了什么?我该如何解决?
答案 0 :(得分:2)
您没有在
中声明数组大小char path="./client.c";
将其更改为:
char path[]="./client.c";
现在您的代码应该按照需要运行。
如果您对使用指针感兴趣,请使用
const char* path="./client.c";
直接指向字符串
答案 1 :(得分:1)
替换
char path="./client.c";
带
const char* path="./client.c";
//^no array, just point to the string literal
如果您不需要修改路径。
如果你这样做,那么:
char path[]="./client.c";
//^create a modifiable array from the string literal
char path="./client.c";
编译因为字符串文字自动转换为字符串文字的地址 (它们被放置在可执行文件的静态,通常是只读的段中),这是一个整数,可以在丢失时分配给char。
但是,您应该从编译器中得到关于此的警告。
在没有任何警告的情况下进行编译。
答案 2 :(得分:0)
只需替换
行char path="./client.c";
与
char path[]="./client.c";