| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1857 人关注过本帖
标题:scanf("%s",字符串)和gets(字符串)的区别??内附程序断
取消只看楼主 加入收藏
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
结帖率:91.67%
收藏
已结贴  问题点数:2 回复次数:3 
scanf("%s",字符串)和gets(字符串)的区别??内附程序断
scanf("%s",字符串)和gets(字符串)有区别吗?
我认为是没有的,可是我写了下面的程序才发现不对头
程序的目的是为了给N个首选人选票,最后打印出每个候选人名字下有几票,共M个投票人
程序段1:
#include<stdio.h>
#include<string.h>
#define N 3  /*3个候选人*/
#define M 10   /*10个投票者*/
struct person
{
    char name[10];
    int count;
};
main()
{
    struct person ps[N];
    int i,j;
    char vote_name[10];

    /*初始化候选人*/
    printf("请输入候选人名单,每输入一人回车结束:\n");
    for(i=0 ; i<N ; i++)
        scanf("%s",ps[i].name);
    for(i=0 ; i<N ; i++)
        ps[i].count=0;

    /*唱票*/
    printf("请输入您要投票的名字:\n");
    for(i=0 ; i<M ; i++)
    {
        gets(vote_name);    /*这句是关键,用scanf("%s",vote_name);取代会有不同效果*/
        for(j=0 ; j<N ; j++)
            if( strcmp(ps[j].name,vote_name)==0 )
                ps[j].count++;
    }

    /*输出结果*/
    for(i=0 ; i<N ; i++)
        printf("%s:%d\n",ps[i].name,ps[i].count);

}
这个程序只输入9个投票人,就输出结果了,但是
 gets(vote_name);    /*这句是关键,用scanf("%s",vote_name);取代会有不同效果*/
换掉后


程序段2:
#include<stdio.h>
#include<string.h>
#define N 3  /*3个候选人*/
#define M 10   /*10个投票者*/
struct person
{
    char name[10];
    int count;
};
main()
{
    struct person ps[N];
    int i,j;
    char vote_name[10];

    /*初始化候选人*/
    printf("请输入候选人名单,每输入一人回车结束:\n");
    for(i=0 ; i<N ; i++)
        scanf("%s",ps[i].name);
    for(i=0 ; i<N ; i++)
        ps[i].count=0;

    /*唱票*/
    printf("请输入您要投票的名字:\n");
    for(i=0 ; i<M ; i++)
    {
        scanf("%s",vote_name);      /*这句是关键,用gets(vote_name); 取代会有不同效果*/
        for(j=0 ; j<N ; j++)
            if( strcmp(ps[j].name,vote_name)==0 )
                ps[j].count++;
    }

    /*输出结果*/
    for(i=0 ; i<N ; i++)
        printf("%s:%d\n",ps[i].name,ps[i].count);

}
则没问题,输入10人投票后才输入结果



请人解释一下原因,谢谢大大们
搜索更多相关主题的帖子: gets scanf 内附 字符 
2010-07-21 18:44
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
求解释!
2010-07-21 19:16
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
求解释
2010-07-21 20:22
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
多谢楼上的,我明白了
谢谢
2010-07-21 20:44
快速回复:scanf("%s",字符串)和gets(字符串)的区别??内附程序断
数据加载中...
 
   



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

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