精华内容
下载资源
问答
  • c语言scanf用法

    万次阅读 多人点赞 2019-07-10 23:47:01
    C语言scanf的用法和注意事项 内容参考:https://blog.csdn.net/hk_kang/article/details/78747726 scanf概念 scanf是格式输入函数,功能是在屏幕上输入指定的信息。简单的来说和printf相似却不相同。 scanf调用...

    C语言中scanf的用法和注意事项

    scanf概念

    scanf是格式输入函数,功能是在屏幕上输入指定的信息。简单的来说和printf相似却不相同。
    scanf调用格式: scanf("<格式化字符串>",<地址表>);
    如:
    #include <stdio.h>
    int main()
    {
    int a,b,c;
    printf(“input three data:\n”);//使用 scanf 之前先用 printf 提示输入。
    scanf("%d%d%d",&a,&b,&c); // scanf 的“输入参数”中,前面的取地址符&记住
    printf("%d,%d,%d/n",a,b,c);
    return 0;
    }
    运行时按如下方式输入三个值:
    3□4□5↙(输入a,b,c的值)
    3,4,5 (printf输出的a,b,c的值)
    (1) &a、&b、&c中的&是地址运算符,分别获得这三个变量的内存地址。
    (2) "%d%d%d"是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。
    以下是合法输入方式:
    ① 3□□4□□□□5↙
    ② 3↙
    4□5↙
    ③ 3(tab键)4↙
    5↙

    我们常用到的字符串有:
    %c 读入一个字符。
    %d 读入十进制整数。
    %f 用来输出实数,以小数形式输出。
    %lf 用来输出实数,以更长的小数形式输出。

    分享下学习中明白的注意点:
    1 当定义一个字符变量时,在键盘上输入一个scanf会吸收回车和空格字符,为了进行代码的可行性需在函数结束前加函数getchar()进行吸收。例如:在这里插入图片描述
    定义一个字符z,是scanf是从键盘上获取一个值。因为我们定义的是一个字符,所以将键盘上所有获得的字符赋值给z,而空格和回车也是字符,会影响字符赋值给z,所以要在末尾加个getchar()函数进行吸收。
    没加getchar():
    在这里插入图片描述
    程序第二次进行运算时回车成了运算符了。

    正确结果是:
    在这里插入图片描述
    2 scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。例如,若a和b为int型变量,如果写成scanf("%f%f%f",a,b,c)是错误的。

    scanf 的使用小结:
    1 在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。
    2 scanf 中双引号内,除了“输入控制符”外什么都不要写。
    3 “输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。
    4 “输入控制符”的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类 型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理。
    5 使用 scanf 之前先用 printf 提示输入。

    展开全文
  • C语言scanf()常见报错问题

    千次阅读 多人点赞 2021-06-04 17:23:36
    1.提示 scanf 未申明 2.1.缺少' ; ' 错误 3.进行便捷操作 目录 1.提示 scanf 未申明 2.1.缺少' ; ' 错误 3.进行便捷操作

    目录

    1.提示 scanf 未申明

    2.缺少 ' ; ' 错误

    3.运行后窗口一闪而过

    4.快捷设置以上内容


    1.提示 scanf 未申明

    问题症状:

    我们一开始使用scanf() 都基本会遇到这样的报错

    显示我们未申明 以下的错误

    1."error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, "_CRT_SECURE_NO_WARNINGS". See online help for details."

    2.参见“scanf”的声明

    解决方法:

    一 、_CRT_SECURE_NO_WARNINGS 也就是它错误提示上面给出的代码定义在程序的最开始

    即  #define _CRT_SECURE_NO_WARNINGS(直接复制)

    也可以 #define  _CRT_SECURE_NO_WARNINGS 1 后面 这个1可加可不加两种都可以

    如图:

    二 、将 scanf() 改写成 scanf_s()

    这样也能有效的防止报错,但是在以后的不断学习中,你会知道 scanf() 才是规定的函数 scanf_s()虽然也能使用但是随着你代码量的增多 实现复杂的程序时 可能出现的程序Bug等一系列莫名其妙的问题,你根本不会注意到它,因此这里建议使用第一种方法,也就是在使用 scanf() 时 在程序开头给它定义代码的方式


    2.缺少 ' ; ' 错误

    问题症状:

    如下以及下图中右下角方框显示-它会提示:

    1.语法错误 : 缺少 “;” (在“类型”的前面)

    2.“sum”: 未声明的标识符

    这里你会反复检查代码哪里出现了问题 是否定义了sum 以及是否少了 ' ; ',结果都是百思不得其解。而这里问题 是由VS版本差异导致的这里VS系列推荐VS2013、VS2019,VS2013版本会出现这种问题,VS2019暂时不知,不过解决方法应该一致

    解决方法:

    如图中 可以将  int sum=b+c; 这个sum 定义放在 scanf() 的前面 如下图便能成功运行

    看到这 细心的人会发现 这里我用的是scanf_s() 而不是 scanf()  而这就是我们刚刚讲的未申明scanf(),而为什么我都建议scanf()了还用scanf_s()的原因就是下面要说的快捷设置方法


    3.运行后窗口一闪而过

    同上面所说的一样 不同VS的版本都会有大大小小的问题,因此在学习过程中最好与所学视频资料等使用的版本一致,才能最大程度避免出现一些细小的问题

    问题症状:

    这里出现的问题就是 在你运行的时候程序如果没出错  应该弹出那个win32窗口程序面板 ,在这个界面可以看见你程序运行的结果过程,但是很多人都会出现一闪而过的情况 ,不会显示 就无法进行下一步的操作

     

    解决办法:

    1.在程序开头引入库函数 #include<windows.h>  平时生活中都会说有借有还, C语言也不例外 我们使用的库函数 printf 和微软规定的 系统函数system 等的时候 一旦使用都需要跟系统说一声 即引用 伴随C语言学习的始终

    2.然后在main函数里面return 0;前面加上 system("pause");

    这样程序就能停留在 你需要操作的 win32窗口程序面板


    4.快捷设置以上内容

    思考:

    看到这想必你的问题已经得到了解决,但是心里应该没有太大的喜悦感。为什么呢?因为这些方法没有给你带来一劳永逸的快感,你可能也意识到既然这样那我岂不是每次都要设置一次吗。

    因此这里带来只需设置一次的方法,方法较为简单。

    解决方法:

    1.打开你所装版本的VS安装路径--可以找到软件图标右键打开文件夹所在位置

    2.跟着图示步骤找到newc++file.cpp 你也可以直接在你电脑搜索引擎里面搜这个文件名

    3.管理员身份运行 在里面输入你的内容 即上面讲的 定义 和 窗口闪退 然后保存,新建一个项目你就会发现上面讲的需要你每次写的东西一新建好项目后就有了

    很多人不知道怎么管理员运行,因为右键后没这选项,所以可以将文件拖动到桌面-然后右键编辑然后拖回刚才那个文件夹就行了

    也可以下载一个 Notepad++ 这个软件 就在找到的路径下打开方式选Notepad++编辑newc++file.cpp 也可

    格式最好在VS里面编辑好然后复制在里面,拖回后可以试着新建项目看看有没有效果

    如下图所示,我就将上面讲的需要每次创建基本都需要的繁琐不断重复的东西给放在newc++file.cpp 文件夹里面了 这样每次新建项目就是图示的样子


    最后需要提醒的是 这里的 #define _CRT_SECURE_NO_WARNINGS、 scanf_s()、以及窗口闪退问题 在正规的刷题网站 牛客等 都不会存在 无需进行这些操作,而至于定义变量的位置自己尝试下  毕竟刷题讲究代码的行数内容,你可以看怎样运行更便捷 是定义在scanf()前还是后面

    完结撒花!!

    怎么样,问题解决的感觉是不是很爽呢

    其实这些问题很简单,一会儿就能解决 ,但是写出来却耗费了好多的时间,果然教和学是两码子事,希望这些能帮助到你们。难免会有不足之处,如果有错误,请联系我改正,谢谢啦!点赞关注啦,求求了!!!

    展开全文
  • C语言scanf输入数组数值

    千次阅读 2021-05-31 20:34:03
    for循环遍历之后一个一个写入, int a[n]; for(int i=0;i<n;i++) { scanf("%d",&a[i]); }

    for循环遍历之后一个一个写入,

        int a[n];
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }

    数组前也要加&负号,因为只有a可以作为地址。

    展开全文
  • c语言scanf的用法

    千次阅读 2019-07-10 20:28:30
    函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,…]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值...

    函数名: scanf
    功 能: 执行格式化输入
    用 法: int scanf(char *format[,argument,…]);
    scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
    其调用格式为: scanf("<格式化字符串>",<地址表>);
    scanf()函数返回成功赋值的数据项数,出错时则返回EOF。
    其控制串由三类字符构成:
    1。格式化说明符;
    2。空白符;
    3。非空白符;

    (A) 格式化说明符

    格式字符 说明
    %a 读入一个浮点值(仅C99有效)
    %A 同上
    %c 读入一个字符
    %d 读入十进制整数
    %i 读入十进制,八进制,十六进制整数
    %o 读入八进制整数
    %x 读入十六进制整数
    %X 同上
    %c 读入一个字符
    %s 读入一个字符串
    %f 读入一个浮点数
    %F 同上
    %e 同上
    %E 同上
    %g 同上
    %G 同上
    %p 读入一个指针
    %u 读入一个无符号十进制整数
    %n 至此已读入值的等价字符数
    %[] 扫描字符集合
    %% 读%符号

    附加格式说明字符表
    修饰符 说明
    L/l 长度修饰符 输入"长"数据
    h 长度修饰符 输入"短"数据
    W 整型常数 指定输入数据所占宽度

    • 星号 空读一个数据
      hh,ll同上h,l但仅对C99有效。

    (B) 空白字符
    空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。
    (C) 非空白字符
    一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
    三、scanf函数的使用范例
    例1

    #include<stdio.h>
    int main()
    {
    	int a;
    	int b;
    	int c;
    	while(1) 
    	{
    	printf("请输入a、b、c的值:");
    	scanf("%d%d%d",&a,&b,&c);
    	printf("a=%d b=%d c=%d \n",a,b,c);
     	}
     } 
    

    输出:在这里插入图片描述
    在对于a,b,c的赋值中,无论我们如何敲写空白字符和回车字符都不会影响,一直到abc的值被赋完才会结束一次的赋值。
    例2
    #include<stdio.h>
    int main()
    {
    int a;
    int b;
    int c;
    while(1)
    {
    printf(“请输入a、b、c的值:”);
    scanf("%d,%d,%d",&a,&b,&c);
    printf(“a=%d b=%d c=%d \n”,a,b,c);
    }
    }
    输出:在这里插入图片描述
    在例2中我们对它的输入格式做了修改。结果如上图所示。可以发现在输入数值时,其他字符可以出现在数值前,而不可以出现在数值后,这样将会造成程序的错误。
    例3

    #include <stdio . h>
       int main( )
    {
    char a;
    while( 1 )
    {
    pr intf( "input a:" );scanf( "%c " , &a);
    if(a=='+')
    pr intf("get +\n");
    if(a==' - ')
    pr intf("get -\n" );
    }
      }
    

    在这里插入图片描述
    在scanf函数中,对于字符的接收需要注意对于回车字符的使用
    出现这种情况我们可以添加一句getchar();来进行修改
    例4

    include<stdio .h> 
    int main( )
    {
    char a;
    while( 1 )
    {
    printf("input a:" );
    scanf( "%c" ,&a) ;
    getchar();
    if(a== '+')
    pr intf("get +ln " );
    if( a== '  )
    printf("get -ln' );
    }
    return 0;
    }
    

    相较于例3;我们添加了一句getchar语句则输出为在这里插入图片描述
    我们发现该输出则变成想要的形式了。

    展开全文
  • C语言scanf函数详解和示例

    千次阅读 2020-04-11 16:04:56
    一、数据输入 编写程序的主要目的就是为了处理数据。数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据、从数据库中读取数据、从网页...scanf:格式化输入函数,一次可以输入多个数据,保存到多个变量...
  • C语言scanf()函数返回值 代码例子: #include<stdio.h> int main(){ int num1=0,num2=0; int value= scanf("%d %d",&num1,&num2); printf("%d",value); printf("\nnum1= %d\nnum2= %d",num1,num2)...
  • c语言scanf返回值

    千次阅读 2018-07-22 15:34:16
    1. scanf 函数是有返回值的,它的返回值可以分成三种情况  1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &amp;a, &amp;b);  如果用户输入"3 4",可以正确输入,返回2...
  • C语言scanf函数以及缓存详解

    千次阅读 多人点赞 2018-08-21 00:18:27
    自学到C语言scanf(),printf(),getchar(),gets();的时候,我觉得这个几个函数并没有什么特别的难得,但是后来写程序的时候却出现了一些小错误总是解决不了;上网查了查,是对于C语言缓存的不理解,所以今天本篇博文就...
  • C语言scanf返回值

    千次阅读 多人点赞 2018-01-14 14:32:40
    scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数。例如执行 scanf(“%d %d”, &a, &b); 如果用户输入”3 4”,可以正确输入,返回2(正确输入了两个变量); 如果用户...
  • scanf scanf是C标准库stdio里面定义的用于获取用户输入的函数,具体的介绍可以在CppReference上看到。scanf的返回值是已经成功赋值的变量个数,也就是说在 scanf(&amp;quot;%d %d&amp;quot;,&amp;amp;...
  • C语言scanf函数用法完全攻略

    万次阅读 多人点赞 2019-08-09 15:04:29
    本节介绍输入函数 scanf 的用法。scanf 和 printf 一样,非常重要,而且用得非常多,所以一定要掌握。 概述 scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。该函数的原型为: # include <...
  • C4996解决方法错误提示解决方法方法一:将"scanf()"改写为"scanf_s()"方法二:加入编译预处理指令1、#pragma warning(disable:4996)2、#define _CRT_SECURE_NO_WARNINGS方法三:修改属性step1: 错误提示 解决方法 ...
  • C语言scanf连续输入两个字符

    千次阅读 多人点赞 2021-01-26 09:55:32
    C语言scanf函数连续输入两个字符出现的问题 上代码 //初始代码,输入1,2,a,b,每次输入按了一次回车 int a,b; char c,d; scanf("%d%d",&a&b); scanf("%c%c",%c&d); printf("%d\n%d\n",a,b); printf("%...
  • VS2019用C语言scanf不安全报错问题

    千次阅读 2020-10-15 05:52:38
    1.都说在开头加上#define_CRT_SECURE_NO_WARNINGS就好,为什么我不行?版本太新?——方案一不管用。...可以运行,但有warning,我宁愿用scanf_s,不香吗。 3.最不济,就用vs允许的安全方法 scanf_s即可 ...
  • C语言scanf匹配用法

    千次阅读 2018-12-26 12:41:52
    不同系统的换行符制定 不同系统之间传递文本文件 函数scanf参数列表及返回值 输入缓冲区清除剩余字符 指定字符串的输入长度 输入支持含空格的字符串 灵活指定输入长度和格式
  • C语言 scanf 设置为%d却输入汉字出现循环问题解决 我们小伙伴在学习C语言时可能会遇到这样的问题:scanf("%d",&n);然后不小心输入了汉字,结果就不对了,出现循环,有些编译器可能还会直接崩溃,所以我查阅资料发现...
  • C语言scanf详解

    2013-07-01 16:10:09
    网上找来的,我不是原创。注意 , 键盘缓冲区 与输入有着密切的关系,并且,类型匹配对输入也极为重要!!
  • c语言scanf读取一行

    千次阅读 2019-09-26 08:18:58
    c语言scanf函数可以使用%s来读取一个字符串,但是遇到空格就不会读取后面的内容了。如果需要读取一整行的字符肯定就有问题了。 经过一阵google找到了解决方法,记录下。 就是在scanf中使用%[ ]参数。这个参数的...
  • 在visual studio上使用scanf_s输入字符串报错,如 scanf_s("%s", name); 这是因为scanf_s在读取字符串时,需要提供一个数字以表明读取多少个字符,以防止溢出。 scanf_s("%s", name, 20);
  • 比如我有这样一段代码: for (int i = 1; i <= 3; i++){ scanf("%f,%d\n", &d.coef, &d.expn);...输入完之前的任何一次按下空格键、Tab键、回车键,都不会被scanf读入,只要记得输入完
  • c语言scanf()的返回值

    千次阅读 2018-09-19 21:37:50
    例如scanf("%d %d",&amp;a,&amp;b) 若a,b均正确得到值,则返回2  若a得到值,b不得到值,则返回1(返回成功接收到赋值的个数)  如果遇到错误或遇到end of file,返回...
  • C语言scanf函数用法详细解释!

    千次阅读 多人点赞 2018-12-29 20:51:24
    函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换...
  • 关于C语言 scanf 的三种不同的输入方式 第一种:先输入要读取多少个数,从后面的数字中读取相应个数 代码示意如下 int n,x,flag; scanf("%d",&n); for(flag=0;flag<n2;flag++) { scanf("%d",&b); ...
  • scanf中,我们获取的值都要放在一个地址处,&(取地址符号)一般是针对变量的,比如&a,相当于把输入进来的值放到a的地址处 但是,数组就不需要,通常我们都是忽略的 char password[20] = {0}; printf(...
  • #include &lt;stdio.h&gt; int main() ... scanf("%32[^0-9]s",str); printf("%s\n",str); return 0; }可以通过%后面的参数设定接收的字符数组最大长度,截断字符。
  • scanf("%c", &a); 上面代码在读取的时候不会自动跳过空白字符(空格、Tab、换行),所以在输入的时候容易踩坑。 scanf(" %c", &a); scanf格式化字符串中的空格会匹配任意多个空白字符,所以上面只会读取...
  • C语言scanf和printf格式化输入输出类型多种多样,非常容易弄错,现在整理如下(来源于《算法笔记》. 胡凡, 曾磊主编. 机械工业出版社. P:19-21): 原文链接:https://www.qsp.net.cn/art/121.html ...
  • C语言scanf为啥有时候要输入两次(解析)

    千次阅读 多人点赞 2020-03-18 20:57:13
    C语言scanf为啥有时候要输入两次(解析) 我们先看一下这个例子: 我们看上面的图片,一个scanf()一个格式控制符我们却输入了两次,这是因为我们在scanf()里加入了’ \n '。 简单地说:如果在格式字符串(出现了...
  • C语言scanf输入时缓冲区问题

    千次阅读 多人点赞 2018-11-04 00:26:35
    许多同学可能在写代码时都遇到了关于scanf输入时缓冲区读取问题。 首先来对scanf为什么会出现这类问题进行分析,scanf函数是标准输入流(从键盘接收数据),接收的数据放入输入缓冲区中,其中就包括在键盘输入的空格...
  • C语言scanf输入字符串,举例详解

    千次阅读 多人点赞 2020-05-12 18:24:55
    除了在定义字符数组时初始化外,还可以通过scanf从键盘输入字符串。下面写一个程序: #include <..., 因为在C语言中数组名就代表该数组的起始地址*/ printf("输出结果:%s\n", str); return 0; }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 271,162
精华内容 108,464
关键字:

c语言scanf

c语言 订阅