打包安装程序之后运行程序文件操作报错
void f1()//读取数据{
fp = fopen("数据", "rb");
fread(&stu, sizeof(struct Student),10, fp);
fclose(fp);
}
void fsave()//保存数据
{
fp = fopen("数据", "wb");
fwrite(&stu, sizeof(struct Student), 10, fp);
fclose(fp);
}
这个操作我在vs上面能完美运行,但我打包安装 运行之后在fsave()这里报错了
我该怎么办 本帖最后由 jackz007 于 2020-11-21 17:14 编辑
添加打开文件状态判断代码试试:
int load(char fn[] , struct Student * stu)
{
FILE * fp ;
if((fp = fopen(fn , "rb")) != NULL) {
fread(stu , sizeof(struct Student) , 10 , fp) ;
fclose(fp) ;
return 1 ;
} else {
fprintf(stderr , "Cann't load the file %s\n" , fn) ;
return 0 ;
}
}
int save(char fn[] , struct Student * stu)
{
FILE * fp ;
if((fp = fopen(fn , "wb")) != NULL) {
fwrite(stu , sizeof(struct Student) , 10 , fp) ;
fclose(fp) ;
return 1 ;
} else {
fprintf(stderr , "Cann't save the file %s\n" , fn) ;
return 0 ;
}
} jackz007 发表于 2020-11-21 17:13
添加打开文件状态判断代码试试:
添加了之后,fp在这个写入操作的时候为NULL无法达到想要保存数据的效果
int save(char fn[] , struct Student * stu)
{
FILE * fp ;
if((fp = fopen(fn , "wb")) != NULL)//条件成立
{
fwrite(stu , sizeof(struct Student) , 10 , fp) ;
fclose(fp) ;
return 1 ;
} else {
fprintf(stderr , "Cann't save the file %s\n" , fn) ;
return 0 ;
}
}
开始是安装在C盘的,后来改装到其他盘去了就可以了。老奇怪了。
吃点饭饭 发表于 2020-12-3 09:30
添加了之后,fp在这个写入操作的时候为NULL无法达到想要保存数据的效果
开始是安装在C盘的,后来改装 ...
可能是你对C盘没有获得写权限。
你得以管理员权限运行它。
如果安装了 Comodo之类的安全软件,还要将你写的这个程序添加到安全软件的白名单,允许它对系统分区进行写操作。 rt3 发表于 2020-12-5 17:44
可能是你对C盘没有获得写权限。
你得以管理员权限运行它。
如果安装了 Comodo之类的安全软件,还要将你 ...
平时的软件装到C盘,能读写C盘的文件啊{:10_266:} 吃点饭饭 发表于 2020-12-6 15:19
平时的软件装到C盘,能读写C盘的文件啊
那就不知道了 本帖最后由 rt3 于 2020-12-8 18:23 编辑
用下面的函数代替原同名函数试试
#ifndef _ERRNO_H
#include <errno.h>
#endif
int fsave(){//保存数据
FILE* fp = fopen("数据", "wb");
if(NULL==fp){
printf("errno==%d",errno);
return 3;
}
int b=fwrite(&stu, sizeof(struct Student), 10, fp);
if(-1==b){
printf("write failed.\n");
return 2;
}
int c=fclose(fp);
if(0==c){
printf("close file succeed.\n");
return 0;
}else if(EOF==c){
printf("close file failed.\n");
return 1;
}else{
printf("unknown error.\n");
return 4;
}
}
请问怎么发表悬赏帖子呢
页:
[1]