eleven_xxq 发表于 2013-9-29 11:09:34

请教一个跳出循环的问题

#include <stdio.h>

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

int main()
{
        int i,j;
        char leader_name;

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

゛.緈葍·_o 发表于 2013-9-29 11:19:26

break不是只能跳出内循环么,{:5_92:}我也是新手,O__O"…

苹果沃珂 发表于 2013-9-29 11:28:07

跳不出的原因是:
if (leader_name == leader.name || leader_name == leader.name || leader_name == leader.name)
字符串的比较使用strcmp().
修改建议:
if (strcmp(leader_name ,leader.name)==0 || strcmp(leader_name ,leader.name)==0 || strcmp(leader_name ,leader.name)==0)

eleven_xxq 发表于 2013-9-29 11:35:20

苹果沃珂 发表于 2013-9-29 11:28 static/image/common/back.gif
跳不出的原因是:
if (leader_name == leader.name || leader_name == leader.name || leader_nam ...

{:5_108:}谢谢,太感谢了。成功的实现了我预想的效果。{:5_110:}

eleven_xxq 发表于 2013-9-29 11:38:00

゛.緈葍·_o 发表于 2013-9-29 11:19 static/image/common/back.gif
break不是只能跳出内循环么,我也是新手,O__O"…

是啊。可以跳出whlie循环。#3的朋友帮我解决了这个问题。{:5_106:}

只爱你一人 发表于 2013-9-29 11:46:59

c风格字符串不能像你那样比较!要用strcmp()函数,它属于<cstring>,你的这段应该这样
while(strcmp(leader_name,"li") || strcmp(leader_name,"lo") || strcmp(leader_name,"lp"))
{
   请重新输入(我不知道C的怎么写,我学的c++);
}

eleven_xxq 发表于 2013-9-29 13:05:37

只爱你一人 发表于 2013-9-29 11:46 static/image/common/back.gif
c风格字符串不能像你那样比较!要用strcmp()函数,它属于,你的这段应该这样
while(strcmp(leader_name,"li ...

谢谢。你这个方法可以实现。{:5_110:}

alvinlotus 发表于 2013-9-29 19:32:21

路过。。学习。。

fishso 发表于 2013-9-29 20:03:42

顺便学习一下

牡丹花下死做鬼 发表于 2013-9-30 17:40:36

字符串比较不能直接 用 == 要用strcmp()

御风 发表于 2013-10-1 17:31:21

学习一下。
页: [1]
查看完整版本: 请教一个跳出循环的问题