对于scanf的使用一点体会心得

本文详细解析了C语言中scanf函数的工作原理,特别是在处理带有多个空格的输入时的行为。通过示例代码展示了如何正确读取包含不固定数量空格分隔的整数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天非常的突发气象的在acm上面做了一下题目,悲剧的是多年不用c的人忘记了怎么样的使用scanf了,今天还学到了一点东西。

题目里面提示了输入两个数,规定第1~6列是第一个数的范围,第8~9列是第二个数的范围。然后第一个数字可能没有6位,而第二个数字可能没有两位,那么连个数字中间可能出现,多个空格,而我们一般的使用scanf的方式对于其参数的规定是"%d %d"中间加空格的方式来得到数据的,比如说scanf("%d %d", &x, &y);而这种方式获得的数据规定了scanf的数据的结束的方式,看到空格就结束,而对于上面的两个数据,中间的空格可能很多,当第一个数据获得了以后,第二个数据获取的时候,可能在数据前有空格,而这个给%d的话会由于出错而结束。

而对于scanf函数的方式,获取内容有一个特点,对于scanf("%d%d",&x,&y),中间没有规定结束的符号的时候,scanf是根据自己的方式来结束的,那么这几种方式是

① 遇空格、“回车”、“跳格”键。 
② 遇宽度结束。 
③ 遇非法输入。
因此,对于中间空格很多的时候,第一个数直接赋值给了x,然后遇到空格,说明没有数据,直到遇到第二个数据的时候进行赋值,然后就遇到了回车
结束了。这对与%s 也是对的.
实例1
1 #include <stdio.h>
2 #include <math.h>
3 #include <stdlib.h>
4 #include <malloc.h>
5 #include <string.h>
6  int main(int argc, char argv[])
7 {
8 char *r;
9 int n;
10 r = (char *)malloc(1024*sizeof(char));
11 memset(r, '\0', 1024);
12 if(scanf("%s%d", r, &n) != 2)return 0;
13 printf("%s,%d\r\n", r, n);
14 return 0;
15 }

 

输入数据是
95.123 12或者是95.123                                            12等等中间无论多少空格的时候
得到的结果是
95.123,12

转载于:https://www.cnblogs.com/onlylittlegod/archive/2010/12/01/1893561.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值