C语言关于scanf函数的问题?

作者&投稿:阚胥 (若有异议请与网页底部的电邮联系)
C语言中关于scanf()函数分隔符问题?~

scanf不指定分割符号时,默认以空格、回车、制表符(tab),作为分割符号,可间隔多个分割符号。
至于你最后打印的c,那是换行符对应的ascii码,因为你最后输入的字符是回车。

%d后面的空格是用来匹配所有的连续空白字符的(空白字符包括空格
)直到碰到不是空白的字符。
这个用法主要是为了匹配输入时的空白符,举个例子:
int a;char c;scanf("%d",&a);scanf("%c",&c);上面这个输入代码里,如果是分两次输入(用空白分割),那么c是没有机会输入的,尤其是从文件读取的时候,会有很多的空白符,c会读取到缓冲区的空白,一般解决这个问题是再用一句gtechar(), ,但如果有很多空白就比较麻烦(文件里这种情况很多),如果在%d后面加个空格,就可以吧剩下所有的空白符给吸收掉:
int a;char c;scanf("%d ",&a); //这样可以把空白吸收掉scanf("%c",&c);在你这个代码里,输入全是%d格式,那这个空格就没必要了,不如去掉

答:scanf()的功能是从键盘获取数据赋值给对应的变量,括号内包括输入控制符和输入参数两部分。
从键盘输入的数据需要转化成输入控制符的格式数据,然后存入输入参数。
scanf("%3d",&a);
是通过十进制整数3指定输入的宽度,即字符数,超出部分不赋值,故题中只把123赋值给a。
scanf("%3c",&ch);
通常%3c可以用来读入三个连续的字符,由于这里ch是一个变量,而不是一个数组,所以只能放下一个字符,即题中将4作为一个字符型数据,赋值给ch变量。
超出的部分没有被保存,所以不显示。
如果有不懂的,可以继续提问。

scanf里%3d表示三个数字构成的整数,这里是123;%3c无意义,因为c表示一个字符,3被忽略。所以a=123,ch='4'

scanf中%3d限制了最多只接受3位的数字作为输入赋值给变量a
而%c本身就只能接受一个字符,所以之后后续的字符4被赋值给变量ch


在C语言中scanf("%f",&fahr,&cels) 是什么意思?
在C语言中,scanf 是一个函数,用于从标准输入(例如键盘)读取数据。"%f" 是一个格式字符串,用于指定如何读取数据。在这种情况下,它指定了应该读取一个浮点数,并将其存储在变量 fahr 中。紧接着的 &fahr 表示应将读取的数据存储到 fahr 变量中。这是因为在 C 语言中,许多函数(包括 scanf)...

C语言scanf语句
scanf()是C语言标准库中的输入函数,声明包含在stdio.h文件中,因此要使用该函数,必须加载#include<stdio.h>头文件。当执行到scanf函数时,程序就暂停等待用户输入,该函数只接受变量的地址,格式为&变量名。是一个阻塞式的函数,等用户输入完毕后,则将值赋值给变量,至此函数调用完毕。敲回车键告知...

C语言中关于scanf的使用
scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功...

scanf输入时能用逗号隔开吗?
c语言scanf输入时能用逗号隔开,但是输入数据的时候一定也要加上逗号。用scanf()读取数据时,输入的格式必须和scanf()的格式控制字符串对应。对于标准输入函数scanf来说,括号内的格式字符串,也就是由" "中的部分,除了%引导的格式字符之外,所有的其他字符必须在输入数据时原样原位置输入。例如:scaf("...

C语言关于scanf函数的问题?
答:scanf()的功能是从键盘获取数据赋值给对应的变量,括号内包括输入控制符和输入参数两部分。从键盘输入的数据需要转化成输入控制符的格式数据,然后存入输入参数。scanf("%3d",&a);是通过十进制整数3指定输入的宽度,即字符数,超出部分不赋值,故题中只把123赋值给a。scanf("%3c",&ch);通常%3c...

c语言中scanf是什么意思,为什么有时候后面写%f,有时候写%e,%lf,%c...
scanf是C语言中的一个输入函数,意思就是当你从键盘中输入数值按回车后,他会把你输入的数值储存到电脑,至于为什么后面会写%f,%e.%lf,%c那是根据scanf的对象而定的。向float,double,char就分别用%f,%e,%c

在C语言里,什么时候用scanf函数?
scanf 的意思是把输入的值给送到地址,因此,如果参数已经是地址了,那么不需要 &,否则 需要用&取一下地址 scanf 格式输入函数 函数作用:按照变量在内存的地址将变量值存进去。一般格式:scanf(格式控制,地址表列)其中,格式控制:d:以带符号的十进制形式输出整数 o:以八进制无符号形式输出整数 x...

c语言如何用scanf
需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:int a, b, c, d;scanf("%d%d%d", &a, &b, &c, &d);printf("%d %d %d %d", a, b, c, d);3、编译器运行test.cpp文件,此时...

c语言中scanf有什么作用,?
C语言中scanf是标准库函数,主要用来接收用户输入的数据。C标准函数库是所有符合标准的头文件的集合,以及常用的函数库实现程序,例如I\/O输入输出和字符串控制。不像这三种COBOL、Fortran和PL\/I等编程语言,在C语言的工作任务里不会包含嵌入的关键字,所以几乎所有的C语言程序都是由标准函数库的函数来创建...

关于c语言scanf的用法
记住一点,scanf认为遇到“非法输入”就结束。scanf("%2d%f",&a,&b);中第一个格式控制字符2d的意思是读取2位,作为一个整数输入到给对应的变量a的地址中。输入876,当然只读取前2位87。这是2的作用,后面输入对于2来说,相当于非法输入。对于%f,后面输入的是7 543.0,对于浮点型数据是不可能...

南丰县15591513470: 求问一下关于c语言scanf函数的一些问题,就是说输入数据时,到底应该用什么分割,我们老师说用空格 -
宁趴美天: scanf的输入方式完全要看代码的书写方式了.先来讲一下scanf的输入原理吧: 1、scanf输入流的概念,当执行到scanf函数时,会检查输入流,如果为空,则要求用户输入.如果不为空,则根据scanf的格式化参数从输入流中读取 2、%d 用来...

南丰县15591513470: 简单C语言scanf输入问题 -
宁趴美天: (1)我初学c语言时也碰到了跟你一样的问题, 那是因为scanf函数的一个天生的毛病, 你在调用scanf()时,输入一个数字,并按下回车, 你的本意是只想让scanf接受一个数字, 但同时scanf()把那个回车也送入了缓冲区中, 你可以这样改...

南丰县15591513470: C语言中scanf函数解释? -
宁趴美天: scanf函数是输入函数……例如:scanf(''%d'',&c),就是这样用的就是从终端输入一个变量例如3,那么c的值就是3,如果是int *p=&c;那么scanf(''%d'',p),就是这样的类型,%d是定义变量C的数据类型!

南丰县15591513470: C语言scanf用法 -
宁趴美天: scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include .(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include .)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中.scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF.

南丰县15591513470: C语言中关于scanf的问题 -
宁趴美天: #include"stdio.h" main() { int a; printf("%d",scanf("%d",&a)); // 这个很明显的告诉我们 scanf()返回的并非我们输入的数值,而返回的是输入了几个数字,这里只输入了一个数 所以返回值为1 如果改为 scanf("%d",&a); printf("%d",a); 则是把我们输入的值A存储在内存中,通过printf()语句显示出来 // }

南丰县15591513470: c语言,scanf 输入字符串问题 -
宁趴美天: scanf("%s",str2)的实际操作是将str2作为一个指针,按照字符串(%s)来读取和识别标准输入的内容,并将读取到的内容存储到指针str2所指地址中. 你的str1被赋值为空(null),即为0,所有的系统均不会允许读写地址0上的内容,所以报...

南丰县15591513470: C语言 格式输入scanf函数 中的问题 -
宁趴美天: scanf("%d%d%d" -- %d 表示按整型 输入一个数,%d%d%d 表示按整型 输入三个数. scanf("%d%d%d",&a,&b,&c); 后面的 三个参数 &a,&b,&c 表示把依次输入的三个数,按次序 存到 a的地址里,b的地址里,c的地址里.3<回车>4<回车>5<回车> -- 输入的第一个数是 3,第二个数是 4,第三个数是 5.输入数据 的分隔符 是 <回车> 键第一个数是 3,存到 a 第二个数是 4,存到 b 第三个数是 5, 存到 c

南丰县15591513470: “scanf”在c语言中什么意思? -
宁趴美天: scanf 是C语言中的输入函数,被定义在头文件stdio.h里: 函数原型: int scanf(const char *format,...);函数 scanf() 是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中.其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致.

南丰县15591513470: C语言关于scanf函数问题
宁趴美天: 第一个问题,因为你的scanf函数使用了域宽来指定读入的格式.所谓域宽,就是说读入的时候把某个宽度内的值付给某变量.那么.你第一个参数读入规则是%3c,意思是设置域宽为3,读入一个char型数据.你输入的是abcde.那么前面的abc将作为第一个参数给一个char型数据.而char型数据只需要一个字符,所以a就给了c1,其间的bc被忽略.后面同理了.第二个问题,楼上大致说明白了.不解释.

南丰县15591513470: C语言中关于scanf输入字符问题大神速来 -
宁趴美天: 原因是在input函数里面有接受用户输入的动作,而输入一定是以回车结束,那么这个回车就会残留在缓存中,而当你的scanf读取flag的时候,程序会自动获取前面的那个回车符号,这就是用%c会自动跳过的原因,而用%s的话,程序就会等待下一行输入,回车符号并不会被接收,建议在scanf("%c", &flag);修改为: fflush(stdin); //清空缓存 scanf("%c", &flag);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网