c语言scanf中 %d%d和%d,%d 有什么区别?

Python020

c语言scanf中 %d%d和%d,%d 有什么区别?,第1张

简单讲"%d %c"可以以0个或多个空白字符(空格、tab键、回车等)作为分隔符,同时%c不会读取空白字符,%c读取的一定是一个非空白字符,如:

输入1 a,读取的是1和a;

输入2 b,读取的是2和b;

输入3<回车> <回车>c,读取的是3和c。

而 "%d%c"会读取一个数和紧挨着这个数的一个字符(包括空白字符),如:

输入1 a,读取的是1和' '(空格);

输入2b,读取的是2和b;

输入3.a,读取的是3和.;

输入3<回车>c,读取的是3和'\n'(回车)。

%d 读入十进制整数

%s 读入一个字符串,遇空格、制表符或换行符结束。

* 表示本输入项在读入后不赋值给相应的变量。

在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。

函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。

扩展资料:

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

如:

scanf("%d %d",&a,&b)

函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;

如果只有a被成功读入,返回值为1;

如果a和b都未被成功读入,返回值为0;

如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。

不一样。scanf函数的功能为从标准输入流中读取数据,原型如下:

int scanf(const char *format,...)

scanf根据字符串format,从stdin流中读取数据,读取何种类型的数据,将其以何种形式存储在内存中,由format中的格式符指定。

格式符,即%和它后面的几个字符。用于scanf的格式符有以下几种:

c

读单字符

d

读十进制整数

i

读十进制、八进制、十六进制整数

e

读浮点数

f

读浮点数

g

读浮点数

o

读八进制数

s

读字符串

x

读十六进制数

p

读指针值

u

读无符号十进制整数

[

]

扫描字符集合

所以%d指示scanf读取一个整数值,%c指示读取一个字符,%lf指示读取一个双精度值。