C语言scanf的一些问题

原创 2018年04月15日 14:32:26

#include<stdio.h>
int Readscore(int score[],int id[]);
int Findmax(int m,int score[]);
int main()
{
    int score[40],id[40];
    int n,m;
    n=Readscore(score,id);
    m=Findmax(n,score);
    printf("the max number is %d, the id  is %d",score[m],id[m]);
    return 0;
}
int Readscore(int score[],int id[])
{
    int i,n;
    for(i=0;;i++)
    {
     printf("input score:");
     scanf("%d",&score[i]);
     printf("input id:");
     scanf("%d\n",&id[i]);

       if(score[i]<0)
           break;
    }
           n=i;
    printf("the total number is %d\n",n);
    return n;
}
int Findmax(int m, int score[])
{
    int q,j,max;
    q=0;
    max=score[0];
    for(j=1;j<=m-1;j++)
    {
          if(score[j]>max)
          {
            max=score[j];
              q=j;
          }
    }
        return q;
}

红色部分如果加上"\n"的话,读入数据会发生错误:如图
如果把最后的"\n"去掉以后,发现输入的正确的!但是不知道其中的原理是为什么,先记录下来。等解决以后再补充完整。

经过百度查询,发现在scanf中加入"\n",得需要(整数、浮点数或者字符型)来结束输入,通过输入回车来结束输入是不正确的,控制输入结束的(整数、浮点数或者字符型)先存在缓存区中,会被下一次scanf读取。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sxypgz/article/details/79949061

C语言---关于scanf读入字符串的一些问题

scanf是C语言中常用的标准输入输出函数,它的常规用法是scanf(“输入格式”,输入地址),scanf从输入缓冲区取入数据按照指定的“输入格式”存储到指定的“输入地址”。 但是有一类问题通常令人头...
  • u013213837
  • u013213837
  • 2015-05-11 15:10:10
  • 16233

c语言中连续使用两个scanf的问题

问题如下: 先上程序 一: #include int main (void) {  int a, b;  puts ("请输入一个整数");  scanf ("%d", &a); ...
  • ly0303521
  • ly0303521
  • 2015-03-16 13:47:42
  • 780

C语言scanf函数详细解释

 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(...
  • 21aspnet
  • 21aspnet
  • 2004-11-09 16:42:00
  • 70301

C语言中scanf()的用法

本文章由作者收集来自互联网(天涯论坛)       scanf 原型:      # include   int scanf( const char *format, ... );    ...
  • UnixCRoot
  • UnixCRoot
  • 2012-11-20 16:39:20
  • 5640

[C]c语言中,scanf里面要是数组要不要加&?

先上一段代码给大家看下#include int main(){ int a[100]; int n,i; scanf("%d",&n);//输入个数 for(i=0;i0;i--)printf("%d...
  • mjl960108
  • mjl960108
  • 2016-12-10 13:48:39
  • 4687

C语言scanf函数用法详细解释!!!

函数名: scanf  功 能: 执行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准...
  • linux12121
  • linux12121
  • 2016-07-21 10:53:45
  • 14905

C语言如何清除scanf()缓存

(1)清除缓存的函数是: void safe_flush(FILE *fp) { int ch; while( (ch = fgetc(fp)) != EOF && ch != '\n' ); ...
  • u010870518
  • u010870518
  • 2014-12-04 22:12:57
  • 4587

C语言的scanf()函数用法详解 (缓冲区、格式控制、fflush)

函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(...
  • rl529014
  • rl529014
  • 2016-04-22 16:53:57
  • 2226

C语言中scanf、gets、fgets的区别

1.scanf会读取标准输入缓冲区中的输入行内容直到遇到回车或空白(回车、tab、空格)以换行为例,会把换行符之前的数据全部读入到scanf指定的变量中,回车(\n)依然保存 在缓冲区中,等待下次读...
  • u013500740
  • u013500740
  • 2017-04-13 10:19:57
  • 484

C语言(scanf函数工作原理)

scanf函数可没有能力直接从键盘读取数据,它仅仅是从标准IO输入缓冲区读取数据而已,而这些缓冲区的数据来自于内核,内核数据才来自于键盘。   拓展: 由于scanf只是读取缓冲区的数据,因此如...
  • vincent040
  • vincent040
  • 2016-02-01 13:25:09
  • 1315
收藏助手
不良信息举报
您举报文章:C语言scanf的一些问题
举报原因:
原因补充:

(最多只允许输入30个字)