//源文件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("文件已写入");
}
}