一个简单的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语言中处理字符串是个麻烦的事情啊:)
...全文
672 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
于2024年4月-2025年9月期间,研究团队在贵州习水国家级自然保护区制定39条样线,涵盖灌木林、常绿阔叶林、针叶林、常绿落叶阔叶混交林、针阔混交林等不同植被类型,每条样线分春夏秋冬4个季节采集样品,用真菌采集软件记录经纬度、海拔、采集地点、时间、生境等信息,使用佳能相机(R6 mark Ⅱ)对大型真菌进行拍照,并采集标本,标本存放于贵州省生物研究所大型真菌标本馆(HGAMF)。 通过形态学初步鉴定,结合分子生物学最终鉴定,参考已]报道的中国毒蘑菇名录开展毒蘑菇的认定。 调查到保护区内有毒真菌7目25科64种,导致中毒的主要类型有急性肾衰竭型、神经精神型和胃肠炎型。最终形成贵州习水国家级自然保护区大型有毒真菌图片数据集,它由以下2个部分组成。 (1)附件1包含78张原始照片(.JPG),照片名字包括了大型有毒真菌的拉丁名和中文名,若无中文名的直接用拉丁名。 (2)附件2是一个压缩文件,包含了2张工作表,其中一张表是大型有毒真菌39条样线的信息,另一张表是大型有毒真菌的中毒类型。 照片采用佳能相机R6 mark Ⅱ拍摄,物种鉴定通过多种文献核实,并经两位以上专家鉴定确认。该数据集可为研究地及周边的普通人识别有毒大型真菌提供参考,通过及时的图片对比,能有效避免误采误食大型有毒真菌,同时为因误食大型真菌可能引发的身体损伤进行了总结,能为患者及时治疗提供参考。

70,038

社区成员

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

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