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

work_in_java 2007-01-13 11:39:03
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语言中处理字符串是个麻烦的事情啊:)
...全文
640 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
work_in_java 2007-01-15
  • 打赏
  • 举报
回复
给分
opvcn 2007-01-14
  • 打赏
  • 举报
回复
终于把这个看懂了~~~
strcmp(point,"abc")=0
strcmp(line,"abc")=0
我说这个地方怎么一样呢 原来我看题没有看清楚 ^^ 以后多小心了
argenCHN 2007-01-14
  • 打赏
  • 举报
回复
都没问题啊
Arthur_ 2007-01-13
  • 打赏
  • 举报
回复
偶用GCC 結果如下哦
line=
point=abc
strcmp(line,empty)=0
strcmp(line,"")=0
strcmp(point,"abc")=0
strcmp(line,"abc")=0



Arthur_ 2007-01-13
  • 打赏
  • 举报
回复
应该都是0才对哦
DonaldKnuth 2007-01-13
  • 打赏
  • 举报
回复
//这是类似标准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 );
}
macnab 2007-01-13
  • 打赏
  • 举报
回复
新申请的内存(如:变量,指针)都要复初始值,因为C,或C++里没有自动复初始值( 也就是人们理理的初始值0==NULL).

字符串strcmp()比较是当遇到第一个了NULL返回比较结果,

所以你的point的值才会大于变量abc的.
Dong 2007-01-13
  • 打赏
  • 举报
回复
strcmp在linux和windows下好象没有什么差别的,他们都是标准的函数。

结果应该是0
lockhall 2007-01-13
  • 打赏
  • 举报
回复
在VC6.0下也是0的.

难道在linux下不是?
work_in_java 2007-01-13
  • 打赏
  • 举报
回复
刚编了一遍,还是strcmp(point,"abc")=1 估计和环境有关。谢谢大家啊
work_in_java 2007-01-13
  • 打赏
  • 举报
回复
晕,忘记说了,我的环境是linux的
w_anthony 2007-01-13
  • 打赏
  • 举报
回复
LZ这个是1,这可能吗?
yachong 2007-01-13
  • 打赏
  • 举报
回复
TC2.0,运行结果
line=
point=abc
strcmp(line,empty)=0
strcmp(line,"")=0
strcmp(point,"abc")=0
strcmp(line,"abc")=0

69,368

社区成员

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

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