C/C++中的常见输入输出问题
虽然大部分算法不是考查语法,输入都比较简单,一般先输入一个n,然后再输入n个数据,但也有些算法,尤其是格式复杂,涉及字符串处理的算法,它的输入就会比较麻烦,这里总结了c/c++中常见的输入函数。
scanf
这个是最经典的,也是最灵活的,它是格式化输入,对输入形式比较严格,它会在下列情况结束一个数据的输入
- 遇空格、“回车”、“跳格”键。
- 遇宽度结束。
- 遇非法输入
sscanf
把字符串赋值给其他变量
sscanf(str,"%d",&a);
利用循环语句
如果输入数据的数量未定,就可以用while语句进行输入
//c
while(scanf("%d",&a)!=EOF){
}
//c++
while(cin>>a){
}
getchar
这是一个无参数的函数,读取下一个字符(包括空格和回车)
c=getchar();
因为scanf输入会给缓冲区留下一个\n,所以一般用getchar清除缓冲区,比如
while(getchar()!='\n')
gets
gets用于从缓冲区中读取一个字符串类型,以回车结尾,同时也会取出回车
gets(str);
cin
输入分割:Tab,Space,Enter 缓冲区输入结束:Enter
但同样无法清除缓冲区中的回车
cin>>a>>b;
cin.getline
接受一个char类型的字符,包括空格
cin.getline(str,接受字符个数,结束字符);
getline
getline(cin,str,结束符);