c/c++入门篇之从键盘获得输入

    最近有时间就将一些资料整理总结了下,顺便给自己梳理下,希望也可以对浏览到此的你会有点帮助。

     基于vs2010编译环境,常见的输入有下面几种:

一、非字符串输入

(1)scanf()

scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。

例,int a; float b; double c; char d; scanf(”%d %f %lf %c”,&a,&b,&c,&d)

需注意的是:scanf()函数中没有精度控制,在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。第二个参数需给出变量的地址,在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。在c里包含于头文件stdio.h,在c++中用#include<iostream>。



(2)getchar()和getch()

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.


getch()与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关 的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.但是getch是非标准函数,需要加载头文件#include<conio.h>.


(3) cin

使用cin输入时,程序将输入视为一系列字节。每个字节都被解释为字符编码。不管数据类型是什么,输入一开始都是字符数据,然后cin对象负责将数据转换成其他类型.遇到enter、空格、tab键时表示一个输入结束。

二、字符串输入

对于字符串的存储,常见的有三种形式,一种用字符数组,一种用字符指针,一种用string类,其输入方式如下:

(1)    scanf

对于字符串数组或字符串指针变量,由于数组名和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符,这是和非字符串输入最大的区别。同时当字符串中有空格时,只输出到空格前的内容。

(注意的是,字符串利用字符指针不能通过键盘输入方式来获取,char * s2=”123”才正确)

(2)    cin

cin作为c++指定的输入函数,相较于scanf()具有一定智能,在非字符串输入与字符串输入表现一样。cin建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是为什么有时会出现输入语句失效的原因。

 

(3)gets()与getline()

从stdin流中读取字符串,直至接受到换行符或EOF时停止(会读取空格),要包含#incldue<string>头文件中.并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串,一般用来读取用字符数组存储的字符串

返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

getline函数:’

getline()函数,接受一个字符串的输入包含空格,遇到回车停止要包含#incldue<string>,一般用来读取用string类存储表示的字符串。

其他的还有cin.get()函数cin.getline()函数可以用来控制读入的位数,用的相对较少,可以参考网上相关资料。

本文是自己总结的一些内容,如有错误欢迎指正。

相关链接:

https://www.cnblogs.com/coderchuanyu/p/4230346.html

https://blog.csdn.net/qq_38193597/article/details/70158564




猜你喜欢

转载自blog.csdn.net/xiaomu_347/article/details/80572336