C语言中关于scanf()函数分隔符问题?

作者&投稿:晨药 (若有异议请与网页底部的电邮联系)
关于c语言的scanf函数的逗号问题!!~

对于scanf()函数,如果格式控制串里有逗号(或其他非格式符号),键盘输入时,必须严格按照控制串的内容键入,不能随意输入。如scanf("a=%d,b=%d",&a,&b);响应输入是a=xx,b=xx(xx是整形数)。scanf()函数还有一个特点较为常用,该函数会将白字符(空格、、)作为数据间的分隔符,比如scanf("%d%s%d",&a,str,&b);,响应输入是:12 asder334 35,此后,12赋给a,"asder334 "拷贝到str数组,35赋给b,且各个数据之间的空白符可以是一个,也可以是多个。

#include int main() {struct student {int num;char name[20];float score;}student1,student2;scanf("%d%s%f",&student1.num,student1.name,&student1.score);scanf("%d%s%f",&student2.num,student2.name,&student2.score);if(student1.score > student2.score)printf("%d,%s,%f
",student1.num,student1.name,student1.score);else if(student1.score < student2.score)printf("%d,%s,%f
",student2.num,student2.name,student2.score);else {printf("%d,%s,%f
",student1.num,student1.name,student1.score);printf("%d,%s,%f
",student2.num,student2.name,student2.score);}return 0;}

因为scanf归根结底是c语言中的函数,其中的“,”是函数中的参数分隔符
如果你已经学到函数的话这个不难理解,这就是函数的格式控制符
如果没有学到,那么你就这样了理解:
如果你的函数这样用
scanf(“%c%c”,&a,&b);
那么,在你进行数据输入时就不能打分隔符
这完全取决于你的scanf中引号里面的格式

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

scanf函数在没有人为设定分隔符时 字母和数字之间输入时不需要加空格分隔符(特别是数字后输入字符时,一般不要加空格,否则会增加麻烦)

1.

2.

3.



看了一圈已有的回答,没有一个是说得对的或者说得全面的。
scanf默认分隔符为空白符,当然也可以指定分隔符。上面三个程序的结果都是一样的。除非你在第一个printf和c=getchar()之间清除缓冲,否则,你的第二个Printf永远只会输出10,即换行符的ASCII码值。


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

C语言题目
要求键盘输入的:include<stdio.h> int scan(){ int n=0;printf("输入N:");scanf("%d", &n);return n;} long sum2(int n){ int sum=0;for(int i=0; i<=n; i++){ if(i%2==0)sum += i;} return sum;} long sum5(int n){ int sum=0;for(int i=0; i<=n; i+...

C程序语言中的scantf输入字符串如果有空格的时候系统是不是自动判断为...
Parameters format Format control string argument Optional arguments Remarks The scanf function reads data from the standard input stream stdin and writes the data into the location given by argument. Each argument must be a pointer to a variable of a type that corresponds to a type ...

C语言中,英语的念法
用如果你能从金山词霸上查到这个词,那这个词就是英文原词,可以用金山词霸的读音. 因为C语言的原词就是英文词. 例如: include, float, main C语言里有些词是英文组合词,你可以分别查出它的各部分,按英文读.有些词一部分用了英文词加缩写,例如: scanf, printf,你只能查出它的部分,scan (扫描),...

请问C语言中scanf函数里的%5c 的意思是不是用来输出5个字符?
确实是5个字符,但这个字符是空白符,通常这是作用是用来对齐的,%5c,那么前面4个为空格,第5个为你转义的字符,%-5c则相反,第一个为你转义的字符,后4个为空白符。这种同样适用%5d,%-5d等,例如%5d,输出的数为123,则前面2个为空格加123;若输出的数为12345,则就输出12345,保持原样 ...

C语言中scanf()的作用是什么?
注意问题:ANSI C标准向scanf()增加了一种新特性,称为扫描集(scanset)。扫描集定义一个字符集合,可由scanf()读入其中允许的字符并赋给对应字符数组。扫描集合由一对方括号中的一串字符定义,左方括号前必须缀以百分号。使用扫描集时,scanf()连续吃进集合中的字符并放入对应的字符数组,直到发现不在...

c语言中scanf(“%2d%*2d%2d”,&a,&b);若要输入123456789 则变量a...
a=12,b=56;scanf可以指定输入的宽度,比如scanf(“%2d",&a);就是把输入数据的前两位赋值给a。scanf可以用“*”跳过指定的宽度,比如scanf(“%2d%*2d%2d”,&a,&b);就是把输入数据的前两位12赋值给a,然后跳过34两位,最后把下面两位56赋给b。scanf函数遇到空格和非法输入时结束,并且...

编译原理语法分析器程序设计,用C语言或C++,哪里有这个程序
我写好的.scan.h \/ scan.h ccompiler Created by on 09-10-12.Copyright 2009 __MyCompanyName__. All rights reserved.\/ ifndef _SCAN_H_define _SCAN_H_include <string> include <fstream> using namespace std;typedef enum { ENDFILE,ERROR,ELSE,IF,INT,RETURN,VOID,WHILE,ID,NUM,ASSI...

C语言中scanf处理输入数据时,遇到什么情况时该数据认为结束
停止对a录入,所以a的值为12 2按指定宽度结束,例如"%3d",只取前3列 3遇到非法输入时。例如:scantf("%c%f",&b,&c) 若这样输入:a 123o.26 本例子中,b得到a,对c输入本该是1230.26,但是把0错打成了o(字母 欧),遇到o属于非法输入,结束对c的录入,所以c得值为123 ...

scanf什么意思
scanf是C语言中的一个标准输入函数。下面详细解释scanf的含义和用法:一、基本含义 scanf是“scan format”的缩写,意为“格式扫描”。它是C语言中的一个非常重要的函数,主要用于从标准输入设备读取并格式化数据。二、功能介绍 scanf函数按照指定的格式接收从键盘输入的数据,并存储到指定的变量中。它的...

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

无棣县15773258009: C语言中关于scanf()函数分隔符问题? -
斗刚帅克: scanf函数在没有人为设定分隔符时 字母和数字之间输入时不需要加空格分隔符(特别是数字后输入字符时,一般不要加空格,否则会增加麻烦)

无棣县15773258009: c语言scanf输入时为什么不能用逗号隔开 -
斗刚帅克: 我也在学习,练习习题过程中有一种情况是不能用逗号,空格等等的,就是涉及到%c的情况,因为逗号,空格等都会被认为是字符. eg. scanf("%d%c%d",a,b,c); 如果你输入了1 2 3(1空格2空格3),那么第一个空格就被当作字符了.

无棣县15773258009: C语言输入两个数之间是用空格隔开还是用逗号 -
斗刚帅克: C语言输入两个数之间使用空格隔开还是使用逗号隔开主要取决于你在编写程序时你的scanf语句.具体的区别如下: 1、使用scanf("%d,%d",&a,&b);语句进行输入: 在输入数据时,两个数据中间需要加“,”,如“500,600”. 2、使用scanf(...

无棣县15773258009: C语言scanf函数用法 -
斗刚帅克: scanf("%f%f%f",&a,&b,&c);这样即可将输入的三个数字依次赋值给a,b,c三个变量,在输入数字时,用空格或者回车分隔.

无棣县15773258009: c语言中scanf函数括号里面的格式控制要用逗号隔开吗? -
斗刚帅克: 不需要,如果你用逗号隔开的话,输入数据时就要输入逗号.比如scanf("%d%d", &a, &b);输入时直接输入a的值,回车,然后输入b的值,回车.如果是scanf("%d,%d", &a, &b);输入的时候就要输入a的值,然后输入个逗号,再输入b的值回车.

无棣县15773258009: c语言中,scanf函数中用%d,运行时输入数值时要用空格隔开才有结果,但如果用%c,就不用,为啥 -
斗刚帅克: scanf函数中用%d,运行时输入数值时不要用空格隔开,就会把二个整数当作是一个整数;并且scanf读入数值时,会把前面的空格自动忽略的. 但如果用%c就不行,因为空格也是一个字符,也可以用%c读入的.

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

无棣县15773258009: 谭浩强的C程序设计第三版第83页说scanf函数输入时不能用用逗号作两个数据间的分隔符,但是第84页 -
斗刚帅克: scanf("%d%d",&a,&b);这个地方两个'%d'中间是没有添加任何的字符 那么系统默认采用空格或制表符来作为两个变量输入的分隔符 scanf("%d,%d",&a,&b);这个地方两个'%d'中间是有一个','作为分隔符 那么就必须输入','来作为两个变量值输入的分隔符 在这个地方你用';'或者'!' 甚至“abcdefg”效果都一样都是使用什么作为分隔的标志,那么在输入时就必须输入一样的字符匹配 没有其他的作用

无棣县15773258009: 在c语言里scanf函数在没有人为设定分隔符时 字母和数字之间输入时能不能加空格分隔符 -
斗刚帅克: scanf函数在没有人为设定分隔符时 字母和数字之间输入时不需要加空格分隔符(特别是数字后输入字符时,一般不要加空格,否则会增加麻烦)

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