atoi函数与scanf中%*c及%[^\n]的简单讲解
来源:互联网 发布:平板电脑软件下载 编辑:程序博客网 时间:2024/06/05 09:22
本次讲解将结合:NYOJ-96-n-1位数 进行讲解。
题目链接:
http://acm.nyist.net/JudgeOnline/problem.php?pid=96
题目大意:
输出一个数的除第一位数后面的数,要求去掉前置0,例如:输入1000100,那么输出就是100
首先明确一个神奇的东西~~~
执行下面一段代码:
#include <stdio.h>int main(){ int m; scanf("%d",&m); printf("%d",m); return 0; }
输入:00000001
你以为会输出啥?00000001?
还真不是,正确答案是:
第一次知道是我也是懵逼的~~~
明确了这个之后,这里就有两种做法,首先介绍atoi( )函数,这个函数的功能是是将字符串转换为int 型的整数。
具体用法在这里:
http://www.cplusplus.com/reference/cstdlib/atoi/
相同的也有:
atol
Convert string to long integer (function )
atof
Convert string to double (function )
strtol
Convert string to long integer (function )
所以根据这个思路,我们只需读入字符串,然后将第一个字符变为 ‘0’;
这样输出的数就是符合要求的了。、
代码如下:
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;int main(){ int T; cin>>T; while(T--) { char str[1000010]; cin>>str; str[0]='0'; cout<<atoi(str)<<endl; } return 0;}
运行样例:
接下来就是第二种同样神奇的做法,在scanf中使用%*c;
首先介绍在scanf中加*的作用,就是跳过当前输入值,即不赋值给任何变量。
那么就可以利用这个方法来跳过第一个数了;
下面引自:
作者:王朝
链接:http://www.zhihu.com/question/20615836/answer/26225662
来源:知乎
对于输入字符串还有一些比较有用的控制,
经常需要读入一行字符串,而这串字符里面可能有空格、制表符等空白字符,
如果直接用%s是不可以的,于是有些人就想到用gets(),当然这也是一种选择,
但是懂C的人基本上都知道gets()是一个很危险的函数,而且很难控制,
特别是与scanf()交替使用时前者的劣势更是一览无余,所以gets()一般是不推荐用的,
其实用%[^\n]就可以很好的解决这个问题了,
^表示”非”,即读入其后面的字符就结束读入。
这样想读入一行字符串带空格的字符直接用: scanf("%[^\n]%*c",str);
就可以了,
%*c的作用也是读入\n,否则后面读入的将一直是\n。
为方便叙述,将 scanf("\n%*c%d",&m)
分成 scanf("\n") 、scanf("%*c")、scanf("%d",&m)
scanf("\n“)
对应的是输入流中0或多个连续空白字符(\n \t SPACE)
可能读也可能不读 getchar()
则是必定读一个字符且无论是什么字符
scanf("%*c")
是读一个字符但不存储 scanf("%*1d")
则是读一个“十进制数字字符”但不存储
代码如下:
#include <iostream>#include <cstdio>using namespace std;int main(){ int m; scanf("%d",&m); while(m--) { int n; getchar(); scanf("%*c%d",&n); printf("%d\n",n); } return 0;}
仅代表个人观点,欢迎交流探讨,勿喷~~~
PhotoBy:WLOP
http://weibo.com/wlop
- atoi函数与scanf中%*c及%[^\n]的简单讲解
- C语言中scanf()函数讲解
- atoi函数的讲解
- scanf用法及scanf中有\n的问题
- scanf用法及scanf中有\n的问题
- C语言中scanf函数的详解
- c中scanf的格式化输入函数
- C语言中scanf函数的实现
- C/C++ scanf 函数中%s 和%c 的简单区别
- C/C++中substr函数的应用(简单讲解)
- C中printf与scanf的使用方法
- scanf函数中%s和%c的简单区别——个人见解
- scanf函数中%s和%c的简单区别(转)
- scanf函数中%s和%c的简单区别——个人见解
- C语言中 scanf函数 与getchar 函数的相关测试
- 黑马程序员IOS基础---C语言学习之变量与内存及重要的scanf函数
- C语言中字符串输入中scanf与gets函数的区别
- c语言中atoi函数
- 第一篇博客
- 第十一周上机实践项目——项目2-存储班长信息的学生类
- Handler消息机制------->理解
- 火车头采集器 截取字符串 正则表达式
- Linux系统服务
- atoi函数与scanf中%*c及%[^\n]的简单讲解
- Oracle数据库11gR2 和12c自动启动和关闭,配置EM12c自动启动和关闭
- 用小猫统计制作运动员评价管理系统:用excel表做模板秒速生成数据库表
- 菜逼的Unity学习笔记(二)
- Linux环境准备
- visibility与display
- 字符串压缩
- 深入理解:overflow:hidden——溢出,坍塌,清除浮动
- 第6周 C语言及程序设计提高例程-24 数组名作为函数参数