DLL在任意一个地点添加字符C++

  //源文件cpp里

#include "pch.h"
#include "WriteFileDLL.h"
#include "stdio.h"

_declspec(dllexport)void Addfile(char* cA,int nA)//方法(在任意一个地点添加字符)
  {
      char *cB = cA;
      char cBuffer[1024];
      FILE* fp=NULL;
      fp = fopen("D:\\test1.txt", "rt+");
      fseek(fp, 0, SEEK_END);//从0到尾,这样才能用ftell去测量大小
      long length = ftell(fp);//文件大小
      int nSrcLenth = strlen(cB);//字符的长度
      if (length > nA) 
      {
          fseek(fp, nA, SEEK_SET);//把给的字符的输入位置是鼠标输入的第nA处
          fread(cBuffer, sizeof(char), length - nA - 1, fp);//把定位在nA后面的数据给拿出来
          fseek(fp, nA, SEEK_SET);//把给的字符的输入位置是鼠标输入的第nA处
          fwrite(cB, 1, nA, fp);//写入字符1是要写入内容的单字节数;因为sizeof(char)为1
          fseek(fp, nA + nSrcLenth,SEEK_SET);//移动到增加字符串的后面
          fwrite(cBuffer, sizeof(char), length - nA-1, fp); //将nA后面的数据放在字符输入的位置的后面
      }
//       else//文件长度小于我指定的大小这样我就加在后面
//       {
//           fseek(fp, 0L, SEEK_END);
//           if (fp)
//           {
//               fprintf(fp, "%s", cA);
//           }
//       }
      fclose(fp);
  }

头文件.h

//方法声明

extern "C"
 {
     _declspec(dllexport)void Addfile(char* cA, int nA);
 }

控制台
    HMODULE hModule=LoadLibrary("D:\\Users\\Administrator\\source\\repos\\WriterFileDLL\\Debug\\WriterFileDLL.dll");
   
    typedef int(*MyDLL)(char* cBa, int nA);
    if (hModule != NULL)
    {        //处理错误
    };
        MyDLL myDll = (MyDLL)GetProcAddress(hModule,"Addfile");//addfile为Dll里的方法
       if (myDll == NULL) 
        {
        printf("文件未写入");
       }
         if (myDll)
        {
            myDll((char*)"123",6);//给Addfile里的方法给值
             printf("文件已写入");
          }
}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值