b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

scanf输入字符串 编程语言学习(二) 三种编程语言的基本输入输出(2)

电脑杂谈  发布时间:2018-02-16 22:47:28  来源:网络整理

sb ????//这个换行sb是我endl一下产生的,原先的回车已经被getchar掉了。

??

但是scanf在同样的代码下表现就不一样了,scanf在读取时是忽略内存大小的,我们看:

short b = 0;

scanf("%hd",&b); ??//short decimal 所以这是hd 输入656563

printf("%x", b);

if (getchar() == '\n') {

printf( "is space!");

printf("\n");

}

printf("%s","sb");

控制台界面:

656563

4b3is space! ????//656563的实际转16进制是a04b3 可见scanf对于溢出有些问题

sb

??

(2)??cin.get()函数:

这个与C语言当中的getchar()是一模一样的,就是读一个字符,语法是:char b=cin.get();或者cin.get(b);但拓展了新用法可以接收字符串,语法是 cin.get(字符数组,长度),参数中长度比实际读取长度大1.

代码:

char??a[20];????//该值不可以比读入的位数小,否则会崩溃

cin.get(a, 15);??//即使输入的内容若太短,会提前截止,结尾的\n也不会进入字符串

cout <<??a;

??

控制台界面:

0123456789 0123456789 0123456789

0123456789 0123请按任意键继续. . . ??//读取15-1=14个字符,最后一个以‘\0’填充

scanf如何输入字符串_scanf输入字符串_scanf怎么输入字符串

??

(3)??cin.getline()函数

用于读取一个字符串,与cin.get()函数不同,这个函数在读取结束后会删除缓冲区当中的\n

代码,与C语言的gets函数是一致的:

char??a[20];

cin.getline(a, 5);??????//输入12345

cout <<??a;

if??(cin.get() == '\n') {

cout <<??"stupid"??<<??endl;

}??????????????????????????????????????????//若使用get函数会只出现一个 stupid而不是两个或更多

if??(cin.get() == '\n') {

cout <<??"stupid"??<<??endl;??????//用getline则一个stupid都没有

}

控制台界面:

12345

1234请按任意键继续. . . ??//实际读取了4个字符,自己增加一个‘\0’

PS:C++当中也有getline()函数,这是在<string>头文件下包含的一个函数,功能与cin.getline()是一样的。scanf输入字符串

(4)??

三、Java读取各种形式的数据

Java的读数据应该是最简单的了,基本的形式是:

Scanner input=new??Scanner(System.in);????//参数为任一输入流

Input对象具有next,nextLine,nextInt,nextDouble,hasNext,hasNextLine,hasNextInt,hasNextDouble,这配套的四对方法。

Java当中没有cin和scanf这样先确定好变量再读入数值的方法,统一采用get/getline的逻辑,也就是只读取不管赋值,并且在C++字符和字符串的基础上改为了读入不带空格的字符串(next),带空格的字符串(nextLine),整数(nextInt)和浮点数(nextDouble),对于单个字符的读取需要切割字符串实现。所有的输入输出方法不需要再管C语言当中的末尾回车键了。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-81056-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...