各位大虾,字符串比较问题,小弟拜求了!!

mylzj 2009-09-10 09:01:19
#include <iostream.h>
int mystrcmp(char s1[],char s2[])
{
int i = 0;
while(s1[i]==s2[i] && s1[i]!=0 && s2[i]!=0)
i++;
return s1[i]-s2[i];

}

这个比较字符串的程序中s1[i]!=0是什么意思啊,是判断字符差S1是否结束吗?如果这样的话应该写成s1[i]!='0'这样啊,难道是别的意思???亦或两种都一样??还有最后这句是s1[i]-s2[i]是比较两个串中第i个字符的ASCII码吗???期待大虾们指点啊。。。期待。。。。
...全文
69 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjdio101 2009-09-10
  • 打赏
  • 举报
回复
C++ primer上有很详细的介绍。对指针的赋值。初始化一个指针为空指针(NULL)
char *ch = 0;

所以是可以进行这样判断的。
_highlight 2009-09-10
  • 打赏
  • 举报
回复
学习了,我还一直以为必须用‘\0’呢。
kobemouse 2009-09-10
  • 打赏
  • 举报
回复
'\0'的ASCII码就是0,可以看编译出来的汇编,s[i] != '\0'与s[i] != 0的汇编指令是一摸一样的。
thy38 2009-09-10
  • 打赏
  • 举报
回复
'\0'==0

但是要注意STL中的string就不是用'\0'来判断结束的。
lbjfeng 2009-09-10
  • 打赏
  • 举报
回复
你错了。。。
lz。。

'\0'标示的是最结束的标志,跟'0'不同的·~

你得看看,转义字符的标示方法,其中,'\ddd'或者'\xHH'中,标示的就是相应的字符
mylzj 2009-09-10
  • 打赏
  • 举报
回复
csdn上的高人好多,感触颇多,,,呵呵 谢谢大家帮忙啊
  • 打赏
  • 举报
回复
ASC码值0,也就是字符'\0',用来表示一个C风格字符串的结束。

这个太基础了,必须得知道。
xingzhe2001 2009-09-10
  • 打赏
  • 举报
回复
字符串结束符是'\0',就是0
Lochan 2009-09-10
  • 打赏
  • 举报
回复
'\0' 嗯..
w0911h 2009-09-10
  • 打赏
  • 举报
回复
不是'0',是'\0',查查ACSII表就知道了,判断字符串是否结束
两个字符相减可以得到两个字符的ASCII值的差
whg01 2009-09-10
  • 打赏
  • 举报
回复
字符串是以0x00这个数值最为结束标记,而不是'0'这个字符。
所以用s1[i]!=0。
s1[i]-s2[i]是比较第i个字符ascii编码的差值,也就是返回2个字符串大小关系。

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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