C++输入函数总结

1.scanf
(1)用法:scanf(“e=%d,y=%d”,&e,&y);
备注:在VS2015中需要加入声明
#define _CRT_SECURE_NO_WARNING
S
(2)结束一个数据输入的标志
a.空格,换行符,跳格键
对于空格和换行符,当输入流类型为字符时,是能够获取的!而对于其余类型而言则是数据输入结束的标志。
b.非法输入
c.宽度限制
(3)工作机理:(个人理解)
在输入流中读取所需要的数据。在输入流中各个数据是以空格或者换行符隔开(除字符型,字符型是以一个为单位)。只有当输入流中已经没有数据缓存着,才会要求输入数据。

代码1

int main(int argc, char** argv) 
{
	char str1[100];
	char str2[100];
	char str3[100];
	scanf("%s",&str1);
	printf("%s\n",str1);
	printf("over\n");

	scanf("%s",&str2);
	scanf("%s",&str3);
	printf("%s",str2);
	printf("%s",str3);
	system("pause");
	return 0;}
}

由于对于非char型的数据流而言,空格键是结束一个数据输入的标志,所以一次性输入“I love you”时,在数据流中,以空格键为分隔分别存着三个数据:”i”,”love””you”。因此第一个scanf 取走了第一个数据”i”,打印,接着打印了“over”,然后第二个第三个分别又取走了“love”,”you”.

代码2:

int main(int argc, char** argv) 
{
	char str1[100];
	char x,y;
	scanf("%s",&str1);
	printf("%s\n",str1);
	printf("over\n");
	scanf("%c",&x);
	scanf("%c",&y);
	printf("%c",x);
	printf("%c",y);
	system("pause");
	return 0;
}

输入“jui回车空格”,回车键包含“\r”,”\n”;第一个scanf将jui取走,”\r”被处理为第一个数据输入结束的标志,而”\n”则被第二个scanf取走,以及空格被第三个scanf 取走。于是最后输出时,over换行之后还有一个换行,便是第二个scanf取走的值被打印的结果。以及在“请按任意键结束”前有一个空格键,也就是第三个scanf取走的值被打印的结果。

2.getch()
(1)用法:char c=_getch();需要头文件<conio.h>
备注:在VS2015中为_getch()
(2)作用:在windows系统下无回显的取一个字符(!!);在unix系统下是有回显的;
强调:能读到回车键和空格键
(3)工作机理:getch()是非缓冲输入流,即getch每次输入必须从键盘上读取,而且不需要按回车键。

3.getchar()
(1)用法:char c=getchar();
(2)作用:读取按顺序对应的一个字符
强调:能读到回车键和空格键
(3)工作机理:getchar()是从缓冲区中读取字符,因此需要按回车键结束一个数据的输入。

4.gets_s()
(1)**用法:**gets(字符指针) 需要头文件<string.h> (c中)
(2)结束标志:END OF FILE 或者 换行符(不作为字符串的内容,被抛弃,同时在字符串末尾加上尾零)
(3)作用:读取字符串,并将之放在字符指针所指向的字符数组中。
(4)返回值:读取成功,则返回与字符指针相同的指针值;
读取失败,则返回NULL指针。

5.ungetc()
(1)用法:ungetc(char c,FILE *stream)
其中c是要退回的字符,FILE *stream是文件流指针,常见如stdin
(2)作用:把一个字符退回到输入流中
代码:

int main()
{
int ch;
ch = getchar() ;
printf("%d\n",ch);
ungetc( ch, stdin );
int s;
s=getchar();
printf("%d\n",s);
return 0;
}

输入12,则会运行结束,不再要求输入数据,输出为49(换行)49

6.cin
(1)**用法:**cin>>”字符串字面值常量”>>变量名>>…
(2)结束标志:空格,换行符,非法输入,也就是说,cin不认空格键和换行符。

7.cin.get()
(1)用法:int a=cin.get() char c=cin.get()
备注:针对字符,即a为输入字符的ASCLL码
(2)作用:类似getchar() 读取字符

8.cin.getline()
(1)用法:cin.getline(字符指针,字符个数N,结束符)
(2)作用:一次读取多个字符(包括空白字符)放到字符指针指定的字符串数组中,直到读满N-1个,或者遇到指定的结束符(默认是“\n”)
备注:结束符对结束条件的作用 优先于 指定字符个数
(3)特点:—利用代码说明
代码1:

int main()
{char a[6];
cin.getline(a,6);
cout<<a<<endl;
cin.getline(a,6);
cout<<a<<endl;
return 0;}

如果输入为:abcdef(反正只要大于5(包括空格),第一个a会取前5个字符,但第二个则为空)

可用cin.clear()更正。

代码2:

int main()
{char a[4];
char b[4];
cin.getline(a,5);
cin.clear(); //更正输入
cout<<a<<endl;
cin.getline(b,5);
cout<<b<<endl;
return 0;}

若输入abcdegfgaa,则前四个字符abcd为a,egfg对应b;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值