scanf函数
声明形式:int scanf(char *format, ...);
scanf函数从标准输入中读取字符序列,按照format中的格式说明对字符序列进行解释,并把结果保存在其余的参数中。
当scanf函数扫描完其格式串,或者碰到某些输入无法与格式控制说明匹配的情况时,该函数终止,返回成功匹配并赋值的输入项的个数。
这里有一个有意思的程序:
#include <stdio.h>
int main()
{
char str[80];
char str1[80];
char str2[80];
scanf("%s",str);/*此处输入:I love you! */
printf("%s",str);
sleep(5);/*这里等待5秒,告诉你程序运行到什么地方*/
scanf("%s",str1);/*这两句无需你再输入,是对键盘盘缓冲区再扫描 */
scanf("%s",str2);/*这两句无需你再输入,是对键盘盘缓冲区再扫描 */
printf("n%s",str1);
printf("n%s",str2);
return 0;
}
首先要知道的是scanf遇到以下情况会认为一个数据结束输入:
- 遇空格、回车、跳格键
- 遇宽度结束
- 遇非法输入
所以上述程序遇到空格认为一个字符串输入结束,就返回了。剩下的字符串还保留在stdin流中,所以下次调用scanf函数时是在stdin流中读取残余信息。
若是想避免读取到残留信息,直接调用fflush函数清楚缓冲区就行了。
字符串的输入C++
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
const int ArSize = 20;
char name[ArSize];
char dessert[ArSize];
cout<<"请输入名字"<<endl;
cin>>name;
cout<<"请输入最喜欢的小吃"<<endl;
cin>>dessert;
cout<<"我有一些"<<dessert;
cout<<"给你,"<<name<<endl;
system("PAUSE");
return 0;
}
这里如果输入为
则得不到正确的结果。这里是因为"cin"每次只读取一个单词,并以空格来标志单词的结束。这样就需要用到get()和getline()函数来读取一行。
getline函数:用于读取一行字符,通过换行符来确定行尾,但不保存换行符。在存储字符串时,用空字符来替换换行符。
const函数
在函数体前加const,例如
void example(type a, type b)const
{
////
///
}
这就是一个const函数,主要用在类中,用来避免修改类成员变量。一个const对象只能调用类中的const函数。
http://zjw86212.blog.163.com/blog/static/116692085200910394324880/
原文链接: https://www.cnblogs.com/7ants/archive/2013/04/23/3039180.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/85634
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!