谦虚求学 发表于 2019-11-20 18:10:35

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

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

谦虚求学 发表于 2019-11-20 18:18:55

谦虚求学 发表于 2019-11-20 19:18:09

哎把 获取 文件指针 改成获取文件长度就成功了 ,哎 c语言自己写函数 真累啊       有谁懂解释下 {:5_107:}

wp231957 发表于 2019-11-21 08:59:34

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

不要单纯的发图片   把错误(或者不理解)的代码 也发出来

谦虚求学 发表于 2019-11-21 13:19:06

你好图片里pfile文件结构在fopen函数返回值是零就是第三张图片我打了调试失败还用笔花了个圈,上面几个图片一定把所有的代码都有啊   

bin554385863 发表于 2019-11-21 13:51:11

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

回答个问题还要照图片抄代码,是我我也不会回答你的问题.复制黏贴很难吗

谦虚求学 发表于 2019-11-21 19:48:46

bin554385863 发表于 2019-11-21 13:51
回答个问题还要照图片抄代码,是我我也不会回答你的问题.复制黏贴很难吗

{:5_96:}麻烦你了动动你小手 不是更好反正你还是要用vc编译码代码也不多 少吸一根烟 不是就出来了 {:5_109:}

zltzlt 发表于 2019-11-21 20:07:52

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

我无语了

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

人造人 发表于 2019-11-21 21:38:27

zltzlt 发表于 2019-11-21 20:07
我无语了

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

我认为我们帮他不值得
他这样的态度,我认为他应该另请高明

人造人 发表于 2019-11-21 21:39:11

无语 +1

zltzlt 发表于 2019-11-21 21:46:52

人造人 发表于 2019-11-21 21:38
我认为我们帮他不值得
他这样的态度,我认为他应该另请高明

赞同

谦虚求学 发表于 2019-11-22 18:48:27

人造人 发表于 2019-11-21 21:39
无语 +1

{:5_100:}别这样吗

谦虚求学 发表于 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("失败");
        }
{:5_109:} 修改好了

谦虚求学 发表于 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);
        returnpTempFileBuffer;//FileSize;
       
       
               
}

谦虚求学 发表于 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("失败");
        }
页: [1]
查看完整版本: 怪了怪了 fopen 函数 不起作用了