伙计们,这是memset()
的一个实现,但是我被告知代码中存在一个逻辑错误。你能帮我找到它吗?
我觉得应该将目标字符串的双指针传递给这个函数,这就像传递指针变量的地址而不是指针本身。
当我在 MS VC++ IDE 中执行代码时遇到“访问冲突”。
‘C’库函数memset的定义是
void *memset(char *s, char c, size_t n)
Copy c to the first n characters of s. Return s.
void *memset(char *s, char c, size_t n)
{
size_t i;
for (i = 0; i < n; i++, s++)
{
*s = c;
}
return s;
}
最佳答案
这有几个问题。
void *memset(char *s, char c, size_t n)
{
size_t i;
for (i = 0; i < n; i++, s++) /* incrementing s means you cannot return */
{ /* the original value */
*s = c; /* consider using s[i] = c after not incr. s*/
}
return s; /* this should probably be a cast back to void */
}
关于c - 这个代码片段有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/813941/