鱼C论坛

 找回密码
 立即注册
查看: 2798|回复: 14

怪了怪了 fopen 函数 不起作用了

[复制链接]
发表于 2019-11-20 18:10:35 | 显示全部楼层 |阅读模式
10鱼币
玩程序 的 我  越来越玩回来了  先上个图   有两个图 一个 是主函数   一个是功能函数   意思是获取 加载的程序的文件缓冲区指针,按理说很简单,用fopen函数代开程序获取文件结构 ,在用文件结构指针得到文件大小 ,再用fread函数 读取文件数据 把数据给一个设置的指针 并把指针返回,这样就完事了 ,但是就是怪了,程序以前能用,现在到程序执行到fopen函数执行哪里pFile文件指针结构依然是NULL(0),我用vc2010写的程序 ,我就怪了  ,但是程序生成后 点击生成的 程序能得到文件缓冲区地址,调试缺显示失败 怪了  真怪了  我上个图 你们看看 ,  那个33程序 你可以随便写个 就像helloWode那样。 哪位  朋友 解答下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-20 18:18:55 | 显示全部楼层
捕获.PNG22.PNG 捕获.PNG33.PNG 捕获.PNG44.PNG 捕获.PNG55.PNG 捕获.PNG66.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-20 19:18:09 | 显示全部楼层

谁解释下

谁解释下
哎  把 获取 文件指针 改成  获取文件长度  就成功了 ,哎 c语言自己写函数 真累啊       有谁  懂  解释下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 08:59:34 | 显示全部楼层
谦虚求学 发表于 2019-11-20 19:18
哎  把 获取 文件指针 改成  获取文件长度  就成功了 ,哎 c语言自己写函数 真累啊       有谁  懂  解释下 ...

不要单纯的发图片   把错误(或者不理解)的代码 也发出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-21 13:19:06 From FishC Mobile | 显示全部楼层
你好  图片里  pfile文件结构在fopen函数返回值是零  就是第三张图片  我打了调试失败  还用笔花了个圈  ,上面几个图片一定把所有的代码都有啊   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 13:51:11 | 显示全部楼层
谦虚求学 发表于 2019-11-21 13:19
你好  图片里  pfile文件结构在fopen函数返回值是零  就是第三张图片  我打了调试失败  还用笔花了个圈  , ...

回答个问题还要照图片抄代码,是我我也不会回答你的问题.复制黏贴很难吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-21 19:48:46 | 显示全部楼层
bin554385863 发表于 2019-11-21 13:51
回答个问题还要照图片抄代码,是我我也不会回答你的问题.复制黏贴很难吗

  麻烦你了  动动  你小手 不是更好  反正你还是要用vc编译码  代码也不多 少吸一根烟 不是就出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 20:07:52 | 显示全部楼层
谦虚求学 发表于 2019-11-21 19:48
麻烦你了  动动  你小手 不是更好  反正你还是要用vc编译码  代码也不多 少吸一根烟 不是就出 ...

我无语了

把代码直接粘贴出来岂不是更省事??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 21:38:27 | 显示全部楼层
zltzlt 发表于 2019-11-21 20:07
我无语了

把代码直接粘贴出来岂不是更省事??

我认为我们帮他不值得
他这样的态度,我认为他应该另请高明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 21:39:11 | 显示全部楼层
无语 +1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 21:46:52 | 显示全部楼层
人造人 发表于 2019-11-21 21:38
我认为我们帮他不值得
他这样的态度,我认为他应该另请高明

赞同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-22 18:48:27 | 显示全部楼层

别这样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-22 18:53:14 | 显示全部楼层
本帖最后由 谦虚求学 于 2019-11-22 19:00 编辑

#include "stdafx.h"
#include "test.h"


int _tmain(int argc, _TCHAR* argv[])
{
       
        char* lpszFile="C://33.exe";
        LPVOID pFileBuffer=NULL;
        int ww;
        pFileBuffer=GetFileBuffer( lpszFile);
        if(pFileBuffer)
        {
                printf("文件缓冲长度:%x\n",pFileBuffer);
        }
        else
        {
                printf("失败");
        }
修改好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-22 18:54:12 | 显示全部楼层

#include "stdafx.h"
/***********************************************************
*将文件打开读到文件缓冲区,并获得文件缓冲区指针(地址)
*lpszFile 要打开的文件名
*返回值 是LPVOID 型
*
*************************************************************/
LPVOID GetFileBuffer(IN LPSTR lpszFile)
{
        FILE *pFile=NULL;
        int FileSize=NULL;
        LPVOID pTempFileBuffer=NULL;
        pFile=fopen(lpszFile,"rb+");
        if(!pFile)
        {
                printf("not open");
                fclose(pFile);
                return 0;
        }
        fseek(pFile,0,SEEK_END);
        FileSize=ftell(pFile);
        fseek(pFile,0,SEEK_SET);
        pTempFileBuffer=(LPVOID)malloc(FileSize);
        if(!pTempFileBuffer)
        {
                printf("分配失败");
                fclose(pFile);
                return 0;
        }
        size_t n=fread(pTempFileBuffer,FileSize,1,pFile);
        if(!n)
        {
                printf("读取数据失败");
                free(pTempFileBuffer);
                fclose(pFile);
                return 0;
        }
        fclose(pFile);
        //free(pTempFileBuffer);
        return  pTempFileBuffer;//FileSize;
       
       
               
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-11-22 18:57:01 | 显示全部楼层
上面第一个 代码没修改完 发上去  晕了  我现在从发

#include "stdafx.h"
#include "test.h"


int _tmain(int argc, _TCHAR* argv[])
{
       
        char* lpszFile="C://33.exe";
        LPVOID pFileBuffer=NULL;
        int ww;
        pFileBuffer=GetFileBuffer( lpszFile);
        if(pFileBuffer)
        {
                printf("文件缓冲长度:%x\n",pFileBuffer);
        }
        else
        {
                printf("失败");
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 23:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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