读书人

关于while和if的有关问题

发布时间: 2012-03-02 14:40:28 作者: rapoo

关于while和if的问题
我写了一个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;} 

读书人网 >C语言

热点推荐