鱼C论坛

 找回密码
 立即注册
查看: 659|回复: 5

[已解决]scanf问题

[复制链接]
发表于 2020-7-7 17:11:27 | 显示全部楼层 |阅读模式
1鱼币
这段代码,如果我输入10A10的话,打印出来的就是10,A,10;
但是我并没有用分隔符标明输入的字符10A10对应的是哪一个,scanf是如何操作的?
平时如果使用%d%d%d来控制输入格式时,你每写一个就要敲一下空格,为什么下面代码不用?

  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int a,b;
  5.     char c;
  6.     scanf("%d%c%d",&a,&c,&b);
  7.     printf("%d,%c,%d",a,c,b);
  8. }
复制代码
最佳答案
2020-7-7 17:11:28
本帖最后由 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会根据你的格式字符来进行判断接收。

最佳答案

查看完整内容

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 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-7 17:11:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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会根据你的格式字符来进行判断接收。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-7 18:34:04 | 显示全部楼层
这里使用 %d%c%d
10 当然 是 %d , A 则是 %c
点我了解scanf函数详细用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-7 18:55:46 | 显示全部楼层
平时需要敲空格是因为scanf是("%d %c %d",&a, &c, &b)这里没有加空格
scanf那几个中间隔的什么,输入时就需要打什么,如scanf(%d-%c-%d),你输入时必须输入10-A-10才能打印出10,A,10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-7 19:47:14 | 显示全部楼层
Hello. 发表于 2020-7-7 18:34
这里使用 %d%c%d
10 当然 是 %d , A 则是 %c
点我了解scanf函数详细用法

"%d%d%d"是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。
这是你这个文章里说的,我的问题好像里面没有说。输入时两个数据之间用一个或多个空格等分割。但是我输入的时候只在末尾用了空格。而且数字也可以输入进字符型啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-7 19:56:47 | 显示全部楼层
scanf 没加空格吖
多输出几次不就可以发现,你加空格之后根本输出不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 23:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表