jonhy_love
jonhy.luo
采纳率100%
2017-02-14 10:47

C语言编写DLL,返回字符串以\0结束符结尾

5
已采纳

C语言编写DLL,其中一个函数返回字符串以\0结束符结尾(abc\0),用VB调用DLL的时候返回的字符串因为带\0,len()方法计算字符串长度为实际长度+1,也就是\0结束符被当作字符计算了,在VB中可以用replace("字符串",Chr(0),"")来处理。
现在我是想VB 不处理,而C编写的DLL返回字符串不带\0结束符,请问怎么办?
我用delphi编写的DLL,调用返回的正常。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • llesss_12 llesss_12 4年前

    使用字符串数组 char[]var ,初始化不能用字符串("abc"),用{'a','b','c'},带长度和var,就行了,

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 4年前

    在VB里处理不要用Replace,而是用s = Left(s, Instr(s, Chr(0)) - 1),C语言靠\0作为字符串的结束符,如果没有\0,那么会和之后没有初始化的内存混淆在一起反而不好判断。
    如果你VB调用觉得不方便,不妨封装一个函数使用。

    点赞 2 评论 复制链接分享
  • Tiger_Zhao Tiger_Zhao 4年前

    是通过 Declare 语句声明函数的标准Dll?
    1)你应该把参数声明为 String 类型,VB 会自动进行末尾 \0 的处理。
    2)VB 用 Space() 或 String() 函数创建供写入的字符串缓冲区时,不需要包含 \0 的长度。

    点赞 评论 复制链接分享
  • oyljerry oyljerry 4年前

    就不应该返回\0,而是直接返回字符串。

    点赞 评论 复制链接分享

相关推荐