我正在使用ndk工具链构建以下代码来测试android的文件操作能力。并且,在 /data 中,读或写的权限无疑是 Ok 的。但是,我对为什么 fopen() 不起作用并返回 NULL 感到困惑。这是代码:
#include <unistd.h>
#include <stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
void main()
{
int fd;
int count = 128;
int offset = 32;
int ret;
char buf[1024]="hi ! this is pwrite.";
char pathname[128] = "/data/pwrite.txt";
/*fd = fopen(pathname, O_WRONLY);*/
FILE *infile;
infile = fopen(pathname, "rb");
if(infile==NULL) printf("fopen error \n");
/*if(fd==-1)printf("open error \n");*/
if((ret = pwrite(fd, buf, count, offset))==-1)
{
printf("pwrite error\n");
exit(1);
}
else
{
printf("pwrite success\n");
printf("the writed data is:%s", buf);
}
}
我直接在Android中运行代码时,提示如下:
# ./test
fopen error
pwrite error
有任何想法吗?