【发布时间】:2011-05-27 07:55:07
【问题描述】:
我想将char*的数据复制到char*的另一个最后地址
插图
var1 -> O
var2 -> K
第一步
var1 -> OK
var2 -> K
将var2复制到var1
结果
var1 -> OK
编写代码
#include <stdio.h>
#include <string.h>
void timpah(char *dest, char *src, int l_dest, int l_src)
{
int i = 0;
while(i < l_dest)
{
dest[l_dest+i] = src[l_src+i];
i++;
}
}
int main()
{
char res[2024];
res[1] = 0x4f;
char a[] = {0x4b};
timpah(res,a,1,1);
printf("%s [%d]\n",res,strlen(res));
return 0;
}
运行
root@xxx:/tmp# gcc -o a a.c
root@xxx:/tmp# ./a
[0]
问题
为什么我的代码不起作用?或者是否已经存在任何功能来执行这些,但我还不知道?
感谢关注
【问题讨论】:
-
如果您在
res[1] = 0x4f;之后打印 res 会发生什么?res[0]中有什么内容? -
我很确定它像错别字,但是当我将
res[1] = 0x4f更正为res[0] = 0x4f和timpah(res,a,1,1)为timpah(res,a,1,2)时,结果仍然相同.. 任何解决方案? -
什么是 l_dest 和 l_src?它们应该是长度还是偏移量?
-
那你为什么在
dest[l_dest+i] = src[l_src+i];中使用它们作为偏移量?
标签: c string memory stack-based