专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

一个简单的strcmp函数有关问题,新手分不多,希望各位大侠见谅

发布时间:2011-06-28 16:12:44 文章来源:www.iduyao.cn 采编人员:星星草
一个简单的strcmp函数问题,新手分不多,希望各位大侠见谅
char   line[1024];
cahr   point[1024];            
              char   *empty= " ";
              char   *abc= "abc "
              strcpy(line,empty);
              strcpy(point,abc);
              printf( "line=%s\n ",line);
              printf( "point=%s\n ",point);
printf( "strcmp(line,empty)=%d\n ",strcmp(line,empty));          
              printf( "strcmp(line,\ "\ ")=%d\n ",strcmp(line, " "));     \\   =0(相等)          
              printf( "strcmp(point,\ "abc\ ")=%d\n ",strcmp(point, "abc "));\\=1
              printf( "strcmp(line,\ "abc\ ")=%d\n ",strcmp(point,abc));\\=0
******************************************************************
打印的结果如下:
line=
point=abc
strcmp(line,empty)=0
strcmp(line, " ")=0
strcmp(point, "abc ")=1
strcmp(point,abc)=0
*****************************************************************
我有点不明白这个 "abc "和变量abc字符串不是一样的吗?为什么用strcmp比较会出现不同的结果,还有用line与empty和 " "分别比较又是相同的。真迷糊了,C语言中处理字符串是个麻烦的事情啊:)

------解决方案--------------------
//这是类似标准c库的实现,供参考
int strcmp ( unsigned chat * src , unsigned char *dst )
{
int ret = 0 ;

while( ! (ret = *src - *dst) && *dst)
++src, ++dst;

if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;

return( ret );
}
------解决方案--------------------
偶用GCC 結果如下哦
line=
point=abc
strcmp(line,empty)=0
strcmp(line, " ")=0
strcmp(point, "abc ")=0
strcmp(line, "abc ")=0



------解决方案--------------------
TC2.0,运行结果
line=
point=abc
strcmp(line,empty)=0
strcmp(line, " ")=0
strcmp(point, "abc ")=0
strcmp(line, "abc ")=0
------解决方案--------------------
strcmp在linux和windows下好象没有什么差别的,他们都是标准的函数。

结果应该是0
------解决方案--------------------
终于把这个看懂了~~~
strcmp(point, "abc ")=0
strcmp(line, "abc ")=0
我说这个地方怎么一样呢 原来我看题没有看清楚 ^^ 以后多小心了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: