bluecn2002 发表于 2018-12-19 10:36:50

可有老师帮我看看?判断条件应该为真,可不进入支代码?

/************************/
/*结构体数组做个计票工具*/
/************************/

#include <stdio.h>

struct vote
{
        char *name;
        int sum;
}candi = { {"xiao", 0}, {"zhang", 0}, {"cheng", 0} };

void main()
{
        int i;
        char str;

        printf("input the name of vote. \"OK\" for finish: \n");

        while(1)
        {
                gets(str);
                if(str == "xiao") //str="xiao",可程序不进入执行语句?
                {
                        candi.sum ++;
                        printf("\n");
                }
                else if ( str == "zhang")
                {
                        candi.sum ++;
                        printf("\n");
                }
                else if (str == "cheng")
                {
                        candi.sum ++;
                        printf("\n");
                }
                else if ( str == "OK")
                {
                        break;
                }
                else
                {
                        printf("input error!\n");
                }

        }
        for(i=0; i<3; i++)
        {
                printf("%s get %d vote.\n", candi.name, candi.sum);
       
        }
}

以下是调试截图
http://wx1.sinaimg.cn/mw690/006afBvMgy1fybupggnznj30o40eo74y.jpg

以下是运行截图
http://wx4.sinaimg.cn/mw690/006afBvMgy1fybupfy0x2j309p03kmwy.jpg

TyCk 发表于 2018-12-19 10:43:06

gets(str) 是不是会接收\n换行符?
你试一下 if((str == "xiao\n") 呢。

东辰木 发表于 2018-12-19 11:20:52

字符串比较不能直接用 ==,要用函数strcmp(),改成 if (strcmp(str, "xiao") == 0),加个头文件#include <string.h>
页: [1]
查看完整版本: 可有老师帮我看看?判断条件应该为真,可不进入支代码?