首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-04 
一个简单的strcmp函数问题,新手分不多,希望各位大侠见谅charline[1024]cahrpoint[1024]char*empty

一个简单的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
我说这个地方怎么一样呢 原来我看题没有看清楚 ^^ 以后多小心了

热点排行
Bad Request.