首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

API函数的字符串字串缓冲区为什么要当事先初始化成字符串的长度+1,搞不懂为什么要+1

2014-01-22 
API函数的字符串字串缓冲区为什么要应事先初始化成字符串的长度+1,搞不懂为什么要+1例如这个APIGetSystemD

API函数的字符串字串缓冲区为什么要应事先初始化成字符串的长度+1,搞不懂为什么要+1
例如这个API
GetSystemDirectory
按我的理解,那个字符串缓冲区只初始化为实际长度大小就可以了,为什么还要+1?难道字符串最后还加了
一个字符的其它东西吗?

[解决办法]
本帖最后由 dkfdtf 于 2014-01-21 12:38:41 编辑 因为 c 语言要用一个 ascii 0 来标识字符串的结束
这样看:

cc = ''
nn = GetSystemDirectory(@cc, 0)
cc = Space(nn)
GetSystemDirectory(@cc, nn)
? nn, cc
你可以看到,尾部多个一个 chr(0)
所以,如果你不希望出现尾部的chr(0), 则应该指定 nn = 19,但 cc 的长度应该是 19+1=20

热点排行