+ -
当前位置:首页 → 问答吧 → 关于while和if的问题

关于while和if的问题

时间:2011-12-18

来源:互联网

我写了一个strncpy的函数
char *strncpy(char *dest,const char *src,size_t n)
{
  char *pdest = dest;
  while(n--){
  while(*pdest++ = *src++)
  {
  ;
  }
  }
  return dest;
}
请问为什么编译不通过,而第二个while改成if就可以,求大神给个详细解释,菜鸟请教

作者: zhao0210   发布时间: 2011-12-18

编译通不过?你用的什么编译器?
程序语法上没问题的

作者: keiy   发布时间: 2011-12-18

引用 1 楼 keiy 的回复:
编译通不过?你用的什么编译器?
程序语法上没问题的

说错了,编译可以通过,但得不到我要的结果,拷贝字符串

作者: zhao0210   发布时间: 2011-12-18

main函数贴出来一下吧

作者: logicouter   发布时间: 2011-12-18

引用 2 楼 zhao0210 的回复:
引用 1 楼 keiy 的回复:
编译通不过?你用的什么编译器?
程序语法上没问题的

说错了,编译可以通过,但得不到我要的结果,拷贝字符串


你这里循环了两层啊。。。。去掉里面的while

作者: mingliang1212   发布时间: 2011-12-18

[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;
}
编译通过不通过没有测试,但是你写的这个拷贝涵数,逻辑是错误的. 即使编译通过,也会造成错误.

作者: CN7712   发布时间: 2011-12-18

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;
}

作者: shenxinji   发布时间: 2011-12-18