求助!!急!!!

wyd124 2003-10-10 11:21:55
比较两个字符串char*buf 和char*s,当buf和s相同时老出错。如buf和s不同时,不错。为什么???

while ((buf)&&(s)&&(*buf==*s)) {buf++; s++;}
if (buf) return 0;
if (*buf>*s) return 1;
if (*buf<*s) return -1;
...全文
94 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ningzhiyu 2003-10-10
  • 打赏
  • 举报
回复
同意steedhorse(晨星) 的.

buf是一个指针,它的值是地址值.
当有buf=NULL;这样的赋值时,才可能使检查的指针为空.
(空的意思是不指向任何内存地址,
而不是说指向一个值为0的地址.
c中用NULL,也就是0来表示它不指向任何地址.)

你的程序中用的是++操作,应该是下一个地址,虽然已经是字符串的结束处,
但是该指针的值还是非0的,只是指向的字符为'\0'.
wyd124 2003-10-10
  • 打赏
  • 举报
回复
buf和s是指针呀,,为什么 while ((buf)&&(s)&&(*buf==*s)) 不能判断。while (buf)判断指针是否为空呀??
Oliver2002 2003-10-10
  • 打赏
  • 举报
回复
buf 和 s始终指向一个地址值,并不为0,指向字符串尾时 *buf和*s才为0
liao2001 2003-10-10
  • 打赏
  • 举报
回复
!!!
好像近期打击盗版!
liao2001 2003-10-10
  • 打赏
  • 举报
回复
if(!buf||!s){
printf("oh ,no !\n");
return -119;
}
while(*buf&&*s&&*buf==*s){buf++;s++}
if(*buf>*s) return 1;
if(*buf<*s) return -1;
return 0;
daizh 2003-10-10
  • 打赏
  • 举报
回复
同意楼上
晨星 2003-10-10
  • 打赏
  • 举报
回复
while ((*buf)&&(*s)&&(*buf==*s)) {buf++; s++;}
if (*buf>*s) return 1;
if (*buf<*s) return -1;
return 0;
wyd124 2003-10-10
  • 打赏
  • 举报
回复
第二行为:if (!buf) return 0;

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧