关于c语言输入格式控制的问题:书上例题说在scanf函数的格式声明是%3c的...

作者&投稿:伍腾 (若有异议请与网页底部的电邮联系)
求问一下关于c语言scanf函数的一些问题,就是说输入数据时,到底应该用什么分割,我们老师说用空格~

scanf的输入方式完全要看代码的书写方式了。

先来讲一下scanf的输入原理吧:
1、scanf输入流的概念,当执行到scanf函数时,会检查输入流,如果为空,则要求用户输入。如果不为空,则根据scanf的格式化参数从输入流中读取
2、%d 用来输入一个整数类型,会跳过开始的空白字符(空格 tab 回车都算空白字符),一直扫描到第一个数字开始,然后开始往后扫描,当碰到空白字符或者非数字时停止,然后将前面的数字赋值给对应的变量。如果第一个不是数字,则scanf返回失败。
而%3d %2d这种带宽度修饰时,会最多扫描宽度的字符就停止。并且如果没有扫描到宽度就碰到空白字符或者非数字时也会停止
3、%c 用来输入一个字符,不会跳过最开始的空白字符。从输入流的第一个字符开始。
如果有%3c这种带宽度修饰时,会强制扫描宽度的字符,但是只会将第一个字符赋值给对应的变量。
4、%s 用来输入一个字符串,会跳过开始的空白字符(空格 tab 回车都算空白字符),然后从第一个非空白字符开始,然后开始往后扫描,当碰到空白字符停止,然后将前面的字符串赋值给对应的变量。由于碰到空白字符停止,所以%s无法接受进来空格。
5、%f 用来输入一个单精度浮点数类型,也就是float类型,其他同%d
6、%lf 用来输入一个双精度浮点数类型,也就是double类型,其他同%d

对于你上面的问题
scanf(%3d%2d%3c,&a&b&ch)
输入123空格46空格abc
输出的是a=123 b=46 c=空格 才对

scanf函数输入完成需要一个回车,getchar接收的是一个字符。
要么就是你输入的内容放入字符串中然后逐个比较。
要么你可以getchar每一个字符,然后转化成ascii码,通过判定数值区间来判定输入的字符是否为数字。

输入ab的话不用打空格,输出的时候前面自动产生一个空格,也就是字符靠后输出,如果格式声明是%-3c,那么ab就是考前输出,也就是ab的后面有个空格的位置;格式声明是%d,输入小数,整数部分保留,小数 部分忽略。

1.不用空格
2.%d只保留整数部分


C语言格式化输出函数printf详解——C语言基础知识
C语言中的printf函数是进行格式化输出的关键工具,其基本格式为printf("格式控制字符串", 输出值参数)。格式控制字符串由双引号包围,包含三类信息:输出值参数列表、格式字符和可选的格式修饰符。输出值参数应与格式字符匹配,且通过逗号分隔。对于整数输出,格式字符'd'用于十进制,'d'前加'l'用于长...

c语言中scanf有什么作用,?
详细来说,scanf函数的用法十分灵活。它可以根据指定的格式读取输入数据,并将其存储在程序中定义的变量中。例如,可以通过scanf来读取两个整数,并将其分别存储在变量a和b中。此外,scanf函数还可以配合循环结构使用,实现多轮数据的读取和处理。总之,scanf函数是C语言中非常重要的一个函数,广泛应用于...

c语言中,%dn是什么意思
在C语言中,%dn并不是一个标准的格式控制符或语法结构。详细解释:1. 关于C语言中的格式控制符: 在C语言中,当我们使用printf或scanf等函数时,经常会遇到格式控制符,如%d表示整数,%f表示浮点数等。这些格式控制符用于指定数据的输出或输入格式。然而,%dn并不是C语言中的一个标准格式控制符。...

在C语言中的输入控制格式中带个*号是什么意思?? 例如:scanf("%2d%*3...
与格式符号之间有*号时,该数据被禁止使用。如scanf("%2d%*3d%2d",&a,&b);输入数据:1234567 变量a bd的值分别为12 67。中间345不用,上面这个如果输入1234567,c不赋值,a为12 ,b为67;3c格式字符前有数字按制定 宽度输出字符

c语言% f的作用是什么啊?
双精度浮点型数据的输入格式控制符。因为计算机中所有的数据都是二进制 0、1 代码,所以输出的时候要用“输出控制符”告诉计算机以什么形式将二进制数据显示出来。输出控制符中,%d、%f、%s、%c 是最常用的,它们分别是输出整数、实数、字符串和字符的控制符。%.mf 虽然用得不多,但一定要重视。

c语言printf()中的% d是什么意思?
c语言中printf()函数的一般格式printf("<格式化字符串>", <参量表>)。格式化字符串由格式控制、和输出表列两部分组成,其中格式控制包含格式声明和普通字符。格式声明由“%”和格式字符组成,如%d、%f等。它的作用是将输出的数据类型转换为指定的格式然后输出。普通字符是需要在输出时原样输出的字符。

C语言scanf输入时可以加逗号的吗?
例如,当你使用scanf("%d,%d", &a, &b);时,输入的整数必须用逗号分隔,而不能用空格或回车。然而,对于scanf("%d%d", &a, &b);这样的格式,空白字符(空格、回车)是可以接受的分隔符。逗号运算符在C语言中也扮演着重要角色。它在运算时的优先级最低,用于连接多个表达式。如i = (i++,...

C语言中char类型的数据输入和输出时怎么控制啊?
1、首先打开Microsoft Visual C++软件,单击“文件”菜单->“新建”,新建一个文件,文件名后缀为.c。2、新建好文件后,输入如下内容。3、然后我们在{ }之间输入函数的内容,我们先定义变量c1,变量的类型为char,字符型。4、用printf语句进行输出。5、当内容输入好后,我们点击图中工具按钮,对程序...

C语言格式控制%f%d问题
你说的对,必须要一致 如果是%d的话,那么就没给a赋值,一般就是默认值(有的系统就是0).你这个结果就是a=0的情况计算出来的

如何用scanf输入数据并取小数点后两位?
在C语言中,使用 scanf 函数输入数据时,若要取小数点后两位,可以通过格式控制字符串来指定。include <stdio.h> int main() { float number;printf("请输入一个浮点数:");scanf("%f", &number);number = (int)(number * 100 + 0.5) \/ 100.0; \/\/ 四舍五入到小数点后两位 printf("...

辰溪县13251609174: C语言中,格式控制字符问题%d,%hd,%ld等的问题 -
宿送溃疡: 用做printf的时候,会根据格式字符串做转换 比如 printf(“%d”,a); 等效于 printf(“%d”,(int)a);这个是可以混用的,用错了关系也不大,除非很极端的情况,输出都不会错.但是scanf中不能用错. 比如说 short a; scanf("%d", &a); a是short只有2个字节的空间, 用%d scanf会写四个字节,这个就越界了.

辰溪县13251609174: C语言 如何防止输入格式错误 -
宿送溃疡: 可以通过scanf来控制输入格式,当scanf返回值不正确时,即为输入格式错误,这时清除输入缓冲,并提示重新输入. scanf为C语言格式化输入函数,第一个参数为格式化字符串,可以用来确定输入格式.其返回值为正确输入的变量总数,当...

辰溪县13251609174: C语言中怎么实现要求输入的数据按格式来? -
宿送溃疡: 可以用scanf来执行输入,在第一个参数格式化字符串中指定输入的格式,当输入的实际格式与要求不符时,输入会出错,导致返回值异常,从而确定输入格式非法,提示用户重新输入. scanf的返回值是实际写入数据的变量的个数,当返回值与...

辰溪县13251609174: c语言格式符问题 -
宿送溃疡: scanf格式控制的格式: % * m l或h 格式字符 ①格式字符与printf函数中的使用方式相同,以%d、%o、%x、%c、%s、%f、%e,无%u格式、%g格式. ②可以指定输入数据所占列宽,系统自动按它截取所需数据.如: scanf(“%3d%3d”,&a,&b...

辰溪县13251609174: C语言scanf函数的格式控制问题 -
宿送溃疡: 空格的ASCII码值为32,scanf ( "%c%c",&ch1,&ch2 );这样输入的话空格也会被当作输入的值而被接收,scanf ( " %c %c",&ch1,&ch2 );写成这样,则声明输入一个字符必须输入空格隔开,所以空格没有被当作输入的值接收.

辰溪县13251609174: C语言 格式输入问题 -
宿送溃疡: scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车键仍会留在输入的缓冲区中.gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中 你的题目分析如下:aa后面是空格,所以a1的储存结束,a1=aa 然后bb你按了回车,a2的储存结束,a2=bb 由于你bb完,按了回车,回车留在缓冲区中,然后执行gets(a3),a3遇到缓冲区的回车,a3结束.然后你按了cc dd 执行gets(a4),a4储存cc dd,由于你回车,a4结束.然后打印puts会自动换行,一个puts换一行~

辰溪县13251609174: 关于C语言,这个语句错误在哪里.求高手.
宿送溃疡: 输入格式控制的问题 scanf("%d,%d,%d",&a,&b,&c); 输入的时候需要“1,2,3” (注意中间是,), 如果你换成scanf("%d%d%d",&a,&b,&c);就成空格分割数据了. 因为你的格式输入控制间隔符号是,所以输入的格式也要是,一定要对应! 但是你输入的时候肯定是输入一个数字后回车了

辰溪县13251609174: c语言中怎么控制写到文件中的格式啊 -
宿送溃疡: 和printf的用法一样,当然输出换行符到文件也一样!只不过是多了个文件指针参数而已,这样:for(i=1;i<100;i++){ fprintf(fp,"%d\t",i);if(i%10==0) fprintf(fp,"\n"); }******************************************** 和printf()函数一样,也是通过格式控制字符串控制的.比如:fprintf(fp,"%s:%d\n","abc",258);

辰溪县13251609174: C语言整型的格式控制符 -
宿送溃疡: %i的意思是有符号整型的意思,实质上和%d是一个意思来的. 只管使用%d就好啦.

辰溪县13251609174: 输入有格式控制吗?(C语言) -
宿送溃疡: 没有,那样做是不允许的.只能+空格,+换行,+自定义的符号

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