| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5320 人关注过本帖
标题:if(!strcmp(s1,s2))它应该如何判断是真是假.
只看楼主 加入收藏
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:10 
if(!strcmp(s1,s2))它应该如何判断是真是假.
#include "string.h"
#include "stdio.h"
void main()
{
    char a1[80],a2[80],*s1=a1,*s2=a2;
    gets(s1);gets(s2);
    if(!strcmp(s1,s2))
        printf("*");
    else
        printf("#");
}
//如代码,输入两串字符进行比较.
我输入!
book回车(这是字符串1)
book空格回车(这是字符串2)


那么我的问题是:strcmp(s1,s2)比较的时候,.s1应该比s2小对吧!因为s2比s1多一个空格,就是strcmp(s1,s2)<0成立,为真.
问题出在这里了, !(strcmp(s1,s2))字符串1,小于 字符串2时候返回值<0.非就是取反的意思!  那么是大于等于0吗。
所以这处 if(!strcmp(s1,s2)) 我不知道应该如何正确的来判断,它到底是真还是假,怎么判断输出 if还是 else呢。求解!




[ 本帖最后由 默默学习 于 2011-3-9 00:36 编辑 ]
搜索更多相关主题的帖子: 字符串 book 
2011-03-09 00:34
cacker
该用户已被删除
收藏
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2011-03-09 00:59
sunguang216
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-9
收藏
得分:0 
if(!strcmp(s1,s2))
中只是用来判断strcmp(s1,s2)是否为0  如果是0进入if后面的语句  如果不是0则执行else,!不是取反
2011-03-09 07:13
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
可以直接判断。用!有点多余了。还麻烦
2011-03-09 09:32
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
strcmp(str1,str2)比较两个串,如果str1<str2,则返回值小于0,如果str1==str2,则返回值为0,如果str1>str2,则返回值为大于0,所以,2楼正解。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-09 09:49
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:3 
!-1=0,0代表假,非0代表真 if(!-1) 是假,if(!0)是真,if(-1)是真

帮人《---》帮己
2011-03-09 10:27
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
收藏
得分:0 
楼上各位哥们,这是书上的原题代码。。
所以不是我想纠结,我只是想了解 if(!strcmp(s1,s2)) 到底是取的什么。。
!strcmp(s1,s2)的意义。。
2011-03-09 22:55
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
回复 2楼 cacker
这样写不规范吗,我觉得很正常

免费赠送河蟹一只
2011-03-09 23:02
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:13 
if(!strcmp(s1,s2))
        printf("*");
    else
        printf("#");

看成

  t = strcmp(s1,s2)  //t为临时变量,在程序不可见。
   if(!t)            // !0为1 ,! (!0)为0
        printf("*");
    else
        printf("#");

小代码,大智慧
2011-03-09 23:07
编程2011
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:73
专家分:19
注 册:2011-3-3
收藏
得分:0 
strcmp(str1,str2)比较两个串,如果str1的第一个字符>str2的第一个字符,则返回值大于0,如果str1==str2,则返回值为0,如果str1的第一个字符<str2的第一个字符,则返回值为小于0, strcmp与strcnp是等价的
2011-03-09 23:12
快速回复:if(!strcmp(s1,s2))它应该如何判断是真是假.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016996 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved