鱼C论坛

 找回密码
 立即注册
查看: 1885|回复: 10

c 语言问题

[复制链接]
发表于 2016-7-20 13:19:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int l;
char ch[2];

        for (l=0; l>=0; )
        {
        scanf("%s", ch);
                if (ch == "OK")
                        break;
        }


为什么输入 OK不会终止循环?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-7-20 13:28:25 | 显示全部楼层
要怎么改进?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-20 13:54:35 | 显示全部楼层
要比较字符串,不能直接使用 ==
这里使用 strncmp 比较合适
#include <stdio.h>
#include <string.h>

#define BUFF_SIZE (20)


/*
        只有当输入两个大写字母 OK 时,程序终止 

*/

int main(void)
{
        char buff[BUFF_SIZE];
        
        while(1)
        {
                fgets(buff, BUFF_SIZE, stdin); // 这里不推荐使用 scanf("%s", buff);
                if(strncmp(buff, "OK", 2) == 0)
                {
                        break;
                }
        }
        
        return 0;
}

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2016-7-20 16:53

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-7-20 17:36:02 | 显示全部楼层
人造人 发表于 2016-7-20 13:54
要比较字符串,不能直接使用 ==
这里使用 strncmp 比较合适

为什么不能直接比较?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-20 17:53:23 | 显示全部楼层
学习电脑 发表于 2016-7-20 17:36
为什么不能直接比较?

因为字符串的本质是地址存放的值,表示字符串的是地址。你用那两个地址 == ,可能一样吗

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
人造人 + 1 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-7-21 21:52:19 | 显示全部楼层
scanf("%s",&ch)     这句话里不是要加这个的吗    &
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-21 22:10:10 | 显示全部楼层
if 改成 if (!strcmp(ch,"ok"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-22 12:31:25 | 显示全部楼层
弧矢七 发表于 2016-7-21 21:52
scanf("%s",&ch)     这句话里不是要加这个的吗    &

不用,因为那是数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-22 12:32:06 | 显示全部楼层
陌雨 发表于 2016-7-21 22:10
if 改成 if (!strcmp(ch,"ok"))

非0就是1?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-24 14:14:47 | 显示全部楼层

说明了就是 if括号里面如果是非 就不执行,如果不是非就执行,如果ch==OK 那就不是非 就执行下面句,OK了么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 07:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表