博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++输入函数总结
阅读量:4230 次
发布时间:2019-05-26

本文共 2423 字,大约阅读时间需要 8 分钟。

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<<
<
<

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

可用cin.clear()更正。

代码2:

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

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

转载地址:http://tgiqi.baihongyu.com/

你可能感兴趣的文章
Inside SQLite
查看>>
How to Cheat at Configuring Open Source Security Tools
查看>>
Microsoft SharePoint: Building Office 2007 Solutions in C# 2005
查看>>
Beginning Google Maps Applications with Rails and Ajax: From Novice to Professional
查看>>
Beginning JBoss® Seam: From Novice to Professional
查看>>
Professional XML
查看>>
Foundations of Security: What Every Programmer Needs to Know
查看>>
Pro WF: Windows Workflow in .NET 3.0
查看>>
Beginning SQL Server 2005 Express for Developers: From Novice to Professional
查看>>
Multimedia over IP and Wireless Networks: Compression, Networking, and Systems
查看>>
Hacking Ubuntu: Serious Hacks Mods and Customizations
查看>>
PHP 5 Advanced: Visual QuickPro Guide
查看>>
Adobe Illustrator CS3 Classroom in a Book
查看>>
Sams Teach Yourself Adobe Photoshop CS3 in 24 Hours
查看>>
FileMaker Pro 8.5 Bible
查看>>
AutoCAD: Secrets Every User Should Know
查看>>
Combating Spyware in the Enterprise
查看>>
Microsoft Windows Vista Unveiled
查看>>
How to Cheat at Securing a Wireless Network
查看>>
Sams Teach Yourself Visual C# 2005 in 24 Hours, Complete Starter Kit
查看>>