scanf问题
这段代码,如果我输入10A10的话,打印出来的就是10,A,10;但是我并没有用分隔符标明输入的字符10A10对应的是哪一个,scanf是如何操作的?
平时如果使用%d%d%d来控制输入格式时,你每写一个就要敲一下空格,为什么下面代码不用?
#include<stdio.h>
int main()
{
int a,b;
char c;
scanf("%d%c%d",&a,&c,&b);
printf("%d,%c,%d",a,c,b);
}
本帖最后由 Shuranima 于 2020-7-7 20:17 编辑
scanf是以%(格式字符)来判断输入,如%d则是整型,而scanf则是以空格作为分割符,用来分隔多个变量,而一个例外则是使用%c字符型。
scanf("%d%c%d",&a,&b,&c);
10A10输入后按回车则会将10A10\n输入缓冲区,第一个%d接受10后,判断出A不为int型变量则结束不接手A,%c接则接受A,最后一个%d接受10后判断\n为回车则自然结束。
又例如你所说的为什么这样3个%d需要空格
scanf("%d%d%d",&a,&b,&c);
1 2 3 这样输入才能判断出1为a变量2为b变量3为c,以空格进行分割各个变量。
总的来说就是scanf会根据你的格式字符来进行判断接收。
这里使用 %d%c%d
10 当然 是 %d , A 则是 %c
点我了解scanf函数详细用法 平时需要敲空格是因为scanf是("%d %c %d",&a, &c, &b)这里没有加空格
scanf那几个中间隔的什么,输入时就需要打什么,如scanf(%d-%c-%d),你输入时必须输入10-A-10才能打印出10,A,10 Hello. 发表于 2020-7-7 18:34
这里使用 %d%c%d
10 当然 是 %d , A 则是 %c
点我了解scanf函数详细用法
"%d%d%d"是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。
这是你这个文章里说的,我的问题好像里面没有说。输入时两个数据之间用一个或多个空格等分割。但是我输入的时候只在末尾用了空格。而且数字也可以输入进字符型啊。 scanf 没加空格吖
多输出几次不就可以发现,你加空格之后根本输出不了
页:
[1]