鱼C论坛

 找回密码
 立即注册
查看: 3912|回复: 7

打包安装程序之后运行程序文件操作报错

[复制链接]
发表于 2020-11-21 15:49:18 | 显示全部楼层 |阅读模式
10鱼币
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()这里报错了
IMG_20201121_154224.jpg
我该怎么办

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-21 17:13:01 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-21 17:14 编辑

        添加打开文件状态判断代码试试:
  1. int load(char fn[] , struct Student * stu)
  2. {
  3.         FILE * fp                                                  ;
  4.         if((fp = fopen(fn , "rb")) != NULL) {
  5.                 fread(stu , sizeof(struct Student) , 10 , fp)      ;
  6.                 fclose(fp)                                         ;
  7.                 return 1                                           ;
  8.         } else {
  9.                 fprintf(stderr , "Cann't load the file %s\n" , fn) ;
  10.                 return 0                                           ;
  11.         }
  12. }

  13. int save(char fn[] , struct Student * stu)
  14. {
  15.         FILE * fp                                                  ;
  16.         if((fp = fopen(fn , "wb")) != NULL) {
  17.                 fwrite(stu , sizeof(struct Student) , 10 , fp)     ;
  18.                 fclose(fp)                                         ;
  19.                 return 1                                           ;
  20.         } else {
  21.                 fprintf(stderr , "Cann't save the file %s\n" , fn) ;
  22.                 return 0                                           ;
  23.         }
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-3 09:30:27 | 显示全部楼层
jackz007 发表于 2020-11-21 17:13
添加打开文件状态判断代码试试:

添加了之后,fp在这个写入操作的时候为NULL无法达到想要保存数据的效果
  1. int save(char fn[] , struct Student * stu)
  2. {
  3.         FILE * fp                                                  ;
  4.         if((fp = fopen(fn , "wb")) != NULL)//条件成立
  5. {
  6.                 fwrite(stu , sizeof(struct Student) , 10 , fp)     ;
  7.                 fclose(fp)                                         ;
  8.                 return 1                                           ;
  9.         } else {
  10.                 fprintf(stderr , "Cann't save the file %s\n" , fn) ;
  11.                 return 0                                           ;
  12.         }
  13. }
复制代码

开始是安装在C盘的,后来改装到其他盘去了就可以了。老奇怪了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-5 17:44:37 | 显示全部楼层
吃点饭饭 发表于 2020-12-3 09:30
添加了之后,fp在这个写入操作的时候为NULL无法达到想要保存数据的效果

开始是安装在C盘的,后来改装 ...

可能是你对C盘没有获得写权限。
你得以管理员权限运行它。
如果安装了 Comodo之类的安全软件,还要将你写的这个程序添加到安全软件的白名单,允许它对系统分区进行写操作。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-6 15:19:04 | 显示全部楼层
rt3 发表于 2020-12-5 17:44
可能是你对C盘没有获得写权限。
你得以管理员权限运行它。
如果安装了 Comodo之类的安全软件,还要将你 ...

平时的软件装到C盘,能读写C盘的文件啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-6 15:32:05 | 显示全部楼层
吃点饭饭 发表于 2020-12-6 15:19
平时的软件装到C盘,能读写C盘的文件啊

那就不知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-8 14:38:41 | 显示全部楼层
本帖最后由 rt3 于 2020-12-8 18:23 编辑

用下面的函数代替原同名函数试试


  1. #ifndef _ERRNO_H
  2.     #include <errno.h>
  3. #endif
  4. int fsave(){//保存数据
  5.         FILE* fp = fopen("数据", "wb");
  6.         if(NULL==fp){
  7.             printf("errno==%d",errno);
  8.             return 3;
  9.         }
  10.         int b=fwrite(&stu, sizeof(struct Student), 10, fp);
  11.         if(-1==b){
  12.             printf("write failed.\n");
  13.             return 2;
  14.         }
  15.         int c=fclose(fp);
  16.         if(0==c){
  17.             printf("close file succeed.\n");
  18.             return 0;
  19.         }else if(EOF==c){
  20.             printf("close file failed.\n");
  21.             return 1;
  22.         }else{
  23.             printf("unknown error.\n");
  24.             return 4;
  25.         }
  26. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-8 15:33:39 | 显示全部楼层
请问怎么发表悬赏帖子呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-8 21:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表