xiaohuanghuang_ 2021-03-04 22:50 采纳率: 73.3%
浏览 52

在一个10次的循环中,gets读取9次,换scanf却读取了十次,这是为什么?

#include<stdio.h>
#include<string.h>
#include<conio.h>
struct candidate{
    char name[20];
    int count;
}person[3]={"a",0,"b",0,"c",0};
int main(void)
{
    /*********Begin*********/
	int all;int i = 0;
	char temp[20];
	scanf("%d",&all);//就是这里,如果换gets()就只能读取9次,假设all=10
	for (i; i < all; i++)
	{
		scanf("%s",temp);
		if (strcmp(temp,"a")==0)
		{
			person[0].count++;printf("A");
		}
		if (strcmp(temp,"b")==0)
		{
			person[1].count++;
		}
		if (strcmp(temp,"c")==0)
		{
			person[2].count++;
		}
	}
	for (int j=0;j<3;j++)
		printf("%s:%d\n",person[j].name,person[j].count);
	getch();
    /*********End**********/
    return 0;
}
  • 写回答

3条回答 默认 最新

  • _WindChimes 2021-03-05 09:35
    关注
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    //这是测试代码:2021-03-05-LeeHJ
    int main(void)
    {
        int scanfTemp = 0;
        char getsTemp[20];
        char *pGets = NULL;
    
        pGets = gets(getsTemp); //入参是char型指针,这个gets函数不能指定入参
        printf("gets S is %s\r\n", pGets); //gets 入参是字符串的形式,加入输入10 字符串打印是10 但是打印整型 就不是10了
        printf("gets D is %d\r\n", (int)pGets);
    
        scanf("%d", &scanfTemp); //这里指定了 键盘输入的字符转化为整型,这个函数可以指定入参,因此会根据设置转化
        printf("scanfTemp D is %d\r\n", scanfTemp);
    }
    //运行结果:
    //10 //键盘输入
    //gets S is 10
    //gets D is 2686756
    //10 //键盘输入
    //scanfTemp D is 10
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题