鱼C论坛

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

请教一个跳出循环的问题

[复制链接]
发表于 2013-9-29 11:09:34 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

struct person   //定义一个结构体和结构体名。
{
        char name[20];   //定义结构体变量。
        int count;
}leader[3]={{"li",0},{"lo",0},{"lp",0}};    //结构体数组赋初值。

int main()
{
        int i,j;
        char leader_name[20];

        for (i=1;i<=10;i++)
        {
                for (i=1;i<=10;i++)
                {
                        printf ("input name (%d):",i);
                        while (1)
                        {
                                scanf ("%s",leader_name);
                                if (leader_name == leader[0].name || leader_name == leader[1].name || leader_name == leader[2].name)
                                {
                                        break;
                                }
                                else
                                {
                                        printf ("please input again:");
                                }
                        }
// 以上红色标注部分我是想要它输入不符合的字符串的时候就重新输出一次的。但是不知道怎么着他跳不出循环。进不去if语句里边。不知道哪里错了。或者怎么样才能够实现重新输入正确的之后就继续执行以下的语句。
                        for (j=0;j<3;j++)
                        {
                                if (strcmp(leader[j].name,leader_name) == 0)   //strcmp是比较字符串函数S1>S2时返回值大于0
                                {                                              //S1=S2时返回值等于0,S1<S2时返回值小于0
                                        leader[j].count ++;
                                }
                        }
                }
        }
        printf ("\n");
        for (j=0;j<3;j++)
        {
                printf ("%s : %d\n",leader[j].name,leader[j].count);
        }
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-29 11:19:26 | 显示全部楼层
break不是只能跳出内循环么,我也是新手,O__O"…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-29 11:28:07 | 显示全部楼层
跳不出的原因是:
  if (leader_name == leader[0].name || leader_name == leader[1].name || leader_name == leader[2].name)
字符串的比较使用strcmp().
修改建议:
if (strcmp(leader_name ,leader[0].name)==0 || strcmp(leader_name ,leader[1].name)==0 || strcmp(leader_name ,leader[2].name)==0)

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

使用道具 举报

 楼主| 发表于 2013-9-29 11:35:20 | 显示全部楼层

谢谢,太感谢了。成功的实现了我预想的效果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-29 11:38:00 | 显示全部楼层
゛.緈葍·_o 发表于 2013-9-29 11:19
break不是只能跳出内循环么,我也是新手,O__O"…

是啊。可以跳出whlie循环。#3的朋友帮我解决了这个问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-29 11:46:59 | 显示全部楼层
c风格字符串不能像你那样比较!要用strcmp()函数,它属于<cstring>,你的这段应该这样
while(strcmp(leader_name,"li") || strcmp(leader_name,"lo") || strcmp(leader_name,"lp"))
{
     请重新输入(我不知道C的怎么写,我学的c++);
}  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-29 13:05:37 | 显示全部楼层
只爱你一人 发表于 2013-9-29 11:46
c风格字符串不能像你那样比较!要用strcmp()函数,它属于,你的这段应该这样
while(strcmp(leader_name,"li ...

谢谢。你这个方法可以实现。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-29 19:32:21 | 显示全部楼层
路过。。学习。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-29 20:03:42 | 显示全部楼层
顺便学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-30 17:40:36 | 显示全部楼层
字符串比较不能直接 用 == 要用strcmp()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-1 17:31:21 | 显示全部楼层
学习一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 21:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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