// convert9.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "convert9.h"
#include "windows.h"
#include "stdio.h"
#include "string.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
extern "C" _declspec(dllexport) int convert(char *convert, char *cont)
{
char StartFlag[5]="<";//左尖括号
char EndFlag[5]=">";//右尖括号
char flag_st[1000]="";//搜索存放左尖括号位置
char flag_ed[1000]="";//搜索存放右尖括号位置
char sharp_left[2]="<";
char sharp_right[2]=">";
char tmp[1000];//备份
char tmp1[1000];
char tmp2[1000];
long unsigned num_pos=0;
//备份cont
strcpy(tmp, cont);
//左尖括号替换
for (num_pos=0;num_pos < strlen(cont);)
{
strcpy(flag_st,"");
strncat(flag_st, cont+num_pos, 4);
if (strcmp(flag_st, StartFlag) != 0)
{
num_pos++;
if (num_pos > strlen(cont))
{
printf("------------------------");
printf("Start flag not found !");
printf("------------------------");
break;
}
}
else
{
strcpy(tmp1, "");//tmp1变量初始化
strncat(tmp1, cont, num_pos);//截止到"<"前的内容存入变量tmp1
strcat(tmp1, sharp_left);//tmp1连接左尖括号存入tmp1
strcpy(tmp2, cont+num_pos+4);//将"<"后的内容存入变量tmp2
strcpy(cont, tmp1);
strcat(cont, tmp2);//组合变量tmp1和tmp2内容,存入变量cont
}
}
//右边尖括号替换
for (num_pos=0; num_pos < strlen(cont);)
{
strcpy(flag_ed, "");
strncat(flag_ed, cont+num_pos, 4);
if (strcmp(flag_ed, EndFlag) != 0)
{
num_pos++;
if (num_pos > strlen(cont))
{
printf("------------------------");
printf("End flag not found !");
printf("------------------------");
break;
}
}
else
{
strcpy(tmp1, "");//tmp1变量初始化
strncat(tmp1, cont, num_pos);//截止到"<"前的内容存入变量tmp1
strcat(tmp1, sharp_right);//tmp1连接右尖括号存入tmp1
strcpy(tmp2, cont+num_pos+4);//将"<"后的内容存入变量tmp2
strcpy(cont, tmp1);
strcat(cont, tmp2);//组合变量tmp1和tmp2内容,存入变量cont
}
}
//结果存入conv
strcpy(convert, cont);
strcpy(cont, tmp);
return 0;
}
// This is an example of an exported variable
CONVERT9_API int nConvert9=0;
// This is an example of an exported function.
CONVERT9_API int fnConvert9(void)
{
return 42;
}
// This is the constructor of a class that has been exported.
// see convert9.h for the class definition
CConvert9::CConvert9()
{
return;
}
分享到:
相关推荐
几个字符串处理函数增强版 常用需求基本都能完成 已经编译成DLL 函数列表 兼容字符和串 void revstr char str 字符串反转 int substring char res int pos int len char substr 从pos开始取len个字符到substr中 ...
本文将深入探讨如何在DLL过程中有效地传递字符串,特别是在使用Visual Basic进行开发时。 首先,我们要了解BSTR字符串类型。BSTR是微软的Automation或OLE自动化框架中定义的一种Unicode字符串格式,它包含一个头...
在我们的实例中,假设我们有一个名为"myDll.dll"的C语言编写的DLL,它包含了一个名为`addNumbers`的函数,该函数接受两个整数参数并返回它们的和。在C语言中,这个函数的声明可能如下: ```c extern "C" __declspec...
int strreplace(char *res,char *substr,char *desstr)//替换res中的substr为desstr,1成功,0失败 int str_count(char *res,char *substr)//统计res中的substr出现的次数 int cut_str(char *res,char *mark,int pos,...
6. **数据类型映射**:C语言和易语言的数据类型可能不完全匹配,例如C语言的`char*`在易语言中可能是字符串。因此,需要理解两者的数据类型转换规则,确保数据正确传递。 7. **错误处理**:在C语言的DLL中,可以...
本文将深入探讨这两种方法,以及如何在Java中调用C语言编写的SO(Linux下的动态链接库)和DLL(Windows下的动态链接库)中的函数。 首先,JNI是Java官方提供的原生接口,允许Java代码直接与本地代码交互。在Java中...
- 在与自定义DLL库交互时,需要将JASS字符串转换为C的`char`数组,以便C函数能正确解析。 总结,魔兽争霸III 1.24E版本中的字符串转换函数是地图开发者不可或缺的工具,它们帮助我们在JASS脚本中自如地处理字符串...
例如,`printf`函数用于格式化输出,`scanf`函数则用于格式化输入,`malloc`和`free`用于动态内存分配与释放,`strcpy`和`strcat`处理字符串复制和连接,`pow`和`sqrt`在数学运算中发挥重要作用。这些函数是C语言...
1. **定义DLL接口**:在VC++中,你需要声明一个导出函数,该函数接受适当参数(如:`extern "C" __declspec(dllexport) char* GetMacAddress()`),并返回字符串。 2. **分配内存**:在DLL内部,使用`malloc`或`new...
这里,`AddFunc`是函数指针类型,`GetProcAddress`需要函数的名称作为字符串参数。 4. 调用DLL函数:现在你可以通过函数指针调用DLL中的函数了: ```c int result = addFunction(3, 5); printf("Result: %d\n",...
C语言函数库是编程中不可或缺的部分,它包含了一系列预先编译好的函数,供开发者在编写C程序时调用。这些库极大地丰富了C语言的功能,使得程序员能够更高效地完成各种任务,而无需从零开始编写所有代码。本文将深入...
`read_char()`函数从`Buffer[]`中取出字符供上层应用使用,而`write_char()`函数则在串口的发送保持寄存器为空时,将字符写入串口进行发送。 综上所述,本文档的示例代码全面展示了在PC下C语言开发环境中实现串口...
这个标题提到的"VC6MFC md5计算 返回CString字符串"是一个简单实用的实现方式,它允许开发者在MFC应用中方便地计算MD5值,并以常见的CString对象返回结果。 首先,我们要理解MD5的基本原理。MD5是由Ronald Rivest...
- 字符串处理:C#中的字符串是Unicode的,而C中的字符串通常是ASCII。使用`MarshalAs`特性进行转换。 - 错误处理:C语言中的错误通常通过返回值或设置全局变量来报告,而在C#中,可以使用`try-catch`语句处理异常...
- 《Python 字符串操作技巧汇总》 - 《Python 入门与进阶经典教程》 - 《Python 文件与目录操作技巧汇总》 以上内容详细介绍了如何使用 Python 的 ctypes 模块来调用 C 语言函数。无论是进行系统级编程还是性能优化...
然后,我们调用C函数并使用`string_at()`函数将返回的C字符串转换为Python字符串。 运行这个Python脚本,将输出"hello,world": ```bash $ python test.py hello,world ``` 通过这种方式,Python可以方便地利用...
这些函数由第三方软件公司或编程专家提供,为Authorware的图标脚本、文件脚本和字符串脚本增添了额外的功能。 一、外部函数定义: 外部函数,也称作用户自定义函数,不内置于Authorware的图标或脚本中。它们分为DLL...
例如,LabVIEW的字符串和C语言的字符串处理方式就不同,需要使用LabVIEW的字符串到C字符串的转换函数。 4. **调用DLL函数**:将正确的输入值连接到函数节点,运行LabVIEW程序,DLL函数就会被调用。输出值则会显示在...
例如,DLL可能需要C风格的字符串,而LabVIEW使用的是LabVIEW字符串,这需要使用“字符串到C风格字符串”等函数进行转换。 5. **错误处理**:在调用DLL时,应考虑错误处理机制,如检查返回值或使用异常处理结构。DLL...
pStr.value = sBuf.encode() # 将字符串转换为字节串 pVoid = ctypes.cast(pStr, ctypes.c_void_p).value nRst = dll.test(pVoid, len(pStr.value)) ``` 2. **方法二:定义参数类型** ```python test = dll....