【发布时间】:2009-12-14 00:34:45
【问题描述】:
我正在编写memset 函数,我的代码如下,我遇到了问题
void* memsetFun(void* pointer, int c, int size) {
if ( pointer != NULL && size > 0 ) {
unsigned char* pChar = pointer;
int i = 0;
for ( i = 0; i < size; ++i) {
unsigned char temp = (unsigned char) c;
*pChar++ = temp; // or pChar[i] = temp (they both don't work)
}
}
return pointer;
}
我也尝试了 pChar[i] = 我们想要的值,但仍然无法正常工作。它给了我一些没有任何意义的垃圾号码。
我叫它:
memsetFun(address, num, size);
printf("value at %p is %d\n", address, *((int*) address));
我在哪里调用地址(我只是输入地址)
例如,如果您打印字符 ( c ),它会打印出一个奇怪的字符,看起来像 (对于值 4 )
0 0
0 4
【问题讨论】:
-
你确定调用者的大小不是零吗?
-
什么是
p?我猜你的意思是pointer? -
为什么您的原型与 ANSI C 的
memset不同?您应该使用size_t作为第三个参数。另外,请发布实际代码(复制粘贴),不要在这里输入。什么是“p”?最后,发布显示错误的最少代码。 -
是的 p 是指针,我把它当作指针其实很抱歉 :)
-
你能给我们展示一个显示错误的完整程序吗?
num是什么,size是什么?你期望输出是什么?我认为你的功能是正确的,但你对它应该做什么有错误的想法。
标签: c