请高手看看这段代码为什么打开文件失败!!!!!
char buf[1024];
const char* pathname;
struct stat file_info;
//如果打开文件失败,则试着从当前目录打开
ev->file_fd = open( ev->request, O_RDONLY );
log->debug(log,__FILE__ ,__LINE__,__FUNCTION__,"try to open file:%s",ev->request);
if( ev->file_fd == ERROR ){
if(getcwd(buf, sizeof(buf)-1) == NULL)
{
perror("Fail to get current directory");
return ERROR;
}
strcat(buf,"/");
strcat(buf,ev->request);
log->debug(log,__FILE__ ,__LINE__,__FUNCTION__,"try to open file:%s",buf);
pathname = (char*) malloc(strlen(buf));
strncpy(pathname,buf,strlen(buf));
ev->file_fd = open(pathname,O_RDONLY);
if( ev->file_fd == ERROR ){
perror(buf);
log->debug(log,__FILE__ ,__LINE__,__FUNCTION__,"open file failed");
return ERROR;
}
}
标红的两处总是报:No such file or directory.
问题是我从打出的日志中取出问文件路径,比如:/root/1.txt,直接写在open函数中就ok.
但是我换成变量,就报错.通过后边的perror也可以看到文件路径是这确的呀.
请高手指点为什么会找不到文件呢??
const char* pathname;
struct stat file_info;
//如果打开文件失败,则试着从当前目录打开
ev->file_fd = open( ev->request, O_RDONLY );
log->debug(log,__FILE__ ,__LINE__,__FUNCTION__,"try to open file:%s",ev->request);
if( ev->file_fd == ERROR ){
if(getcwd(buf, sizeof(buf)-1) == NULL)
{
perror("Fail to get current directory");
return ERROR;
}
strcat(buf,"/");
strcat(buf,ev->request);
log->debug(log,__FILE__ ,__LINE__,__FUNCTION__,"try to open file:%s",buf);
pathname = (char*) malloc(strlen(buf));
strncpy(pathname,buf,strlen(buf));
ev->file_fd = open(pathname,O_RDONLY);
if( ev->file_fd == ERROR ){
perror(buf);
log->debug(log,__FILE__ ,__LINE__,__FUNCTION__,"open file failed");
return ERROR;
}
}
标红的两处总是报:No such file or directory.
问题是我从打出的日志中取出问文件路径,比如:/root/1.txt,直接写在open函数中就ok.
但是我换成变量,就报错.通过后边的perror也可以看到文件路径是这确的呀.
请高手指点为什么会找不到文件呢??
...全文
相关推荐
jar双击打开失败的解决方法
### jar双击打开失败的解决方法在日常的软件开发工作中,我们经常需要使用到`.jar`文件。这些文件是Java应用程序的一种打包形式,通常包含了编译后的Java类文件和其他资源文件。
c语言打开文件函数使用方法
```c fclose(fp); ```#### 六、示例代码下面是一个简单的示例,演示如何使用`fopen()`以只读方式打开一个文件,并检查文件是否成功打开。
PHP文件打开、关闭、写入的判断与执行代码
如果文件打开失败,fopen会返回false。
易语言打开TXT文件的5种方法源码
例如: ```易语言 .文件路径 = 打开对话框(0, "打开TXT文件", "*.txt") .文件句柄 = 文件打开(.文件路径, "只读") ``` 这段代码会弹出一个文件选择对话框,让用户选择TXT
QT之打开文件对话框选择文件
*.txt)"));```在上述代码中,`tr()`函数用于进行字符串的国际化处理,第一个参数是对话框的标题,第二个参数是默认打开的目录,第三个参数是文件过滤器,它定义了用户可以在对话框中看到的文件类型


