我写了一个strncpy的函数
char *strncpy(char *dest,const char *src,size_t n)
{
char *pdest = dest;
while(n--){
while(*pdest++ = *src++)
{
;
}
}
return dest;
}
请问为什么编译不通过,而第二个while改成if就可以,求大神给个详细解释,菜鸟请教
------解决方案--------------------
------解决方案--------------------
[code=C/C++][/code]char *strncpy(char *dest,const char *src,size_t n)
{
char *pdest = dest;
while(n--){
while(*pdest++ = *src++) //执行n次, src拷贝n回,pdest情何以堪
{
;
}
}
return dest;
}
编译通过不通过没有测试,但是你写的这个拷贝涵数,逻辑是错误的. 即使编译通过,也会造成错误.
------解决方案--------------------
- C/C++ code
char *strncpy(char *dest,const char *src,size_t n) { char *pdest = dest; while(n--){//没必要两层循环 *pdest++ = *src++; } *pdest='\0';//字符串要以'\0'结尾 return dest; }