scanf()函数学习-关键知识点
2015-05-04 12:55
155 查看
scanf()函数基本功能:执行格式化输入;
用法:int scanf(char *format[,argument...]);返回值为正确输入变量的个数;
需要注意的知识点:
(1)对含空格字串的处理:
scanf()函数在处理含空格的字串时,会将字串空格后面的内容舍弃,遇到空格读取结束,eg. scanf("%s",&str); str="ab cd"时,str="ab",此时,若想读取全部字串,可以使 用scanf("%[^\n]",&str); str="ab cd"时,str="ab cd";或者使用gets()函数 gets(str); (注意:gets函数自动将最后输入的回车键转换为'\n',如果输入超过数组长度,出错)。
(2)键盘缓冲区残余信息:
#include<stdio.h>
int main(void)
{
int a=0;
char c='a';
scanf("%d",&a);
scanf("%c",&c);
printf("a=%d c=%c\n",a,c);
return 0;
}
scanf("%c",&c);这句不能正常接收字符,什么原因呢?我们用printf("c=%d/n",c);将C用int表示出来,启用printf("c=%d/n",c);这一句,看看scanf()函数赋给C到底是什么,结果是 c=10 ,ASCII值为10是什么?换行即/n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(/r),一个“换行"(/n),在这里/r被scanf()函数处理掉了,而/n被scanf()函数“错误”地赋给了c.
解决办法:
可以分别在两个scanf()函数之后加个fflush(stdin);,还有加getch(); getchar();也可以,但是要视具体scanf()语句;
scanf("%d",&a);
fflush(stdin);
scanf("%c",&c);
fflush(stdin);
(3)[ ]和[^ ]的使用:
%[1234567890]:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果 一经发现不属于就结束提取。该方法会自动加上一个字符串结束符到已经提取的字符后面)
%[^1234567890]:如果一经发现输入的字符属于方括号内字符串中某个字符,那么就结束提取;如果不属于就提取该字符。
用法:int scanf(char *format[,argument...]);返回值为正确输入变量的个数;
需要注意的知识点:
(1)对含空格字串的处理:
scanf()函数在处理含空格的字串时,会将字串空格后面的内容舍弃,遇到空格读取结束,eg. scanf("%s",&str); str="ab cd"时,str="ab",此时,若想读取全部字串,可以使 用scanf("%[^\n]",&str); str="ab cd"时,str="ab cd";或者使用gets()函数 gets(str); (注意:gets函数自动将最后输入的回车键转换为'\n',如果输入超过数组长度,出错)。
(2)键盘缓冲区残余信息:
#include<stdio.h>
int main(void)
{
int a=0;
char c='a';
scanf("%d",&a);
scanf("%c",&c);
printf("a=%d c=%c\n",a,c);
return 0;
}
scanf("%c",&c);这句不能正常接收字符,什么原因呢?我们用printf("c=%d/n",c);将C用int表示出来,启用printf("c=%d/n",c);这一句,看看scanf()函数赋给C到底是什么,结果是 c=10 ,ASCII值为10是什么?换行即/n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(/r),一个“换行"(/n),在这里/r被scanf()函数处理掉了,而/n被scanf()函数“错误”地赋给了c.
解决办法:
可以分别在两个scanf()函数之后加个fflush(stdin);,还有加getch(); getchar();也可以,但是要视具体scanf()语句;
scanf("%d",&a);
fflush(stdin);
scanf("%c",&c);
fflush(stdin);
(3)[ ]和[^ ]的使用:
%[1234567890]:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果 一经发现不属于就结束提取。该方法会自动加上一个字符串结束符到已经提取的字符后面)
%[^1234567890]:如果一经发现输入的字符属于方括号内字符串中某个字符,那么就结束提取;如果不属于就提取该字符。
相关文章推荐
- scanf()、gets()、getchar()函数的学习笔记
- 黑马程序员—C学习笔记—字符串匹配和scanf函数bug解决
- C/C++学习笔记1 - 深入了解scanf()/getchar()和gets()等函数
- scanf函数学习
- getchar()函数与scanf()函数相关知识点
- c语言学习--scanf()函数详解
- SQL Server 第三堂课,学习数据库函数。跟C#语言异曲同工,同样是由输入参数,输出参数,函数体,返回值四要素组成,不同的是语法和写法。掌握知识的关键在与学好C#语言的函数
- MQL4关键函数学习
- ios开发-c语言之scanf函数和基本运算的学习
- MQL4关键函数学习
- C语言学习之scanf函数
- Hibernate 学习笔记(对关键知识点的系统化总结,亲,百分百对你有帮助哦!)
- 卷积神经网络的关键知识点学习
- 学习java i/o库要掌握的三个关键知识点
- 学习java i/o库要掌握的三个关键知识点
- Python学习笔记--《简明Python教程》之默认函数参数和关键参数函数
- 学习笔记之05-printf和scanf函数
- C学习第一式:对scanf()函数的学习
- 学习java i/o库要掌握的三个关键知识点
- 关于Scanf和Printf函数的一些知识点