zhenhaowa66 发表于 2021-10-10 20:48:34

求,大师给指点下,程序运行正常但无法打开文件

int main()
{
        FILE* fp = fopen("./a.txt", "w+");
        if (NULL == fp) {
                perror("open");
                return;
        }
        //fclose(fp);

        return 0;
}
已启动生成…
1>------ 已启动生成: 项目: Project1, 配置: Debug Win32 ------
1>hellword.c
1>Project1.vcxproj -> D:\C-language\Clanguage\lian xi ce\Project1\Debug\Project1.exe
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

VS 2019,程序运行正常,文件也创建了,却无法打开文件,是怎么回事?

wp231957 发表于 2021-10-11 07:31:27

打不开是啥意思

jhq999 发表于 2021-10-11 11:00:09

本帖最后由 jhq999 于 2021-10-11 11:08 编辑

//fclose(fp);怎么把关闭文件给注释掉了?
独占而不是共享形式打开的文件不能被其他应用打开

转:
先看看见过的打开文件的几种方式:

mfc的CFile封装了windows API: CreateFile,这个函数好用但是只能在windows下用;
c++标准库:fstream,不太会用,有的帖子说这个对象在操作Unicode文本时会遇到困难,因时间原因先不做研究;
c标准库:fopen,boost库里打开文件用的好像就是这个函数,决定就用这个了。
fopen函数也是不满足要求的,因为现在要用共享模式打开文件,而msdn里也说了,这个函数是不支持共享的,所以改用这个函数的带共享模式参数的版本:_fsopen。

zhenhaowa66 发表于 2021-10-11 13:19:09

wp231957 发表于 2021-10-11 07:31
打不开是啥意思

就是不能打开a文件啊,{:5_109:}

zhenhaowa66 发表于 2021-10-11 13:22:52

jhq999 发表于 2021-10-11 11:00
//fclose(fp);怎么把关闭文件给注释掉了?
独占而不是共享形式打开的文件不能被其他应用打开



注释了就可以看到文件有没有打开{:5_91:};结果文件就是不能打开是怎么回事?

zhenhaowa66 发表于 2021-10-11 13:25:17

有没有大师来指点下新手啊{:5_94:}

zhenhaowa66 发表于 2021-10-11 14:31:56

其实也可以说是程序认为已经打开文件了;但是就是找不到已经打开的文件,是怎么回事

wp231957 发表于 2021-10-11 14:43:12

zhenhaowa66 发表于 2021-10-11 14:31
其实也可以说是程序认为已经打开文件了;但是就是找不到已经打开的文件,是怎么回事

我实在不明白你的打不开是啥意思

我用你的代码是可以打开的虽然你没有在程序中FCLOSE()文件但是 随着该进程的结束,系统会帮你关闭
(当然了,自己要养成FCLOSE的习惯)

zhenhaowa66 发表于 2021-10-11 16:42:22

wp231957 发表于 2021-10-11 14:43
我实在不明白你的打不开是啥意思

我用你的代码是可以打开的虽然你没有在程序中FCLOSE()文件但 ...

谢谢你耐心帮助,是我自己认知错了;{:5_91:};程序是没有问题的文件可以打开,也可以写入;我以为打开程序就像打开书本一样,可以看到文件被打开后待在那里{:5_109:}
页: [1]
查看完整版本: 求,大师给指点下,程序运行正常但无法打开文件