gets和scanf函数初篇
来源:互联网 发布:爬虫软件有哪些 编辑:程序博客网 时间:2024/04/30 23:35
: 这一定是我在学习C语言中遇到的第一个大问题,时而感觉搞清楚了,时而又被绕在了里面,那就是gets,getchar还有scanf的区别。
因为一开始我们会经常面临这样这样的问题,人家让我们通过标准输入来输入一些字符或者数字等等,然后再在屏幕上显示出来。我们老师当时就喜欢出这样的问题给我们,让我当时很头大。明明是感觉很简单的问题,但是真正在编写代码的时候却总是出现这样那样的问题。
接下来我们看几个简单的例子:
em1:
通过键盘输入“Hello World”,并在屏幕上显示。
用scanf函数输入:
#include<stdio.h> #include<windows.h> int main() { char arr[10]; printf("input the words\n"); scanf_s("%s", arr,10); printf(arr); system("pause"); return 0;}
当我输入"Hello World"的时候,会发现屏幕只给我输出了"Hello",得不到我想要的结果。 当我使用gets函数的时候
#include<stdio.h>#include<windows.h>int main(){ char arr[20]; printf("input the words\n"); gets_s(arr,20); printf(arr); system("pause"); return 0;}
就能得到我想要的结果"Hello World".当然这只是一个很简单的例子,相信很多人都知道其中的缘由。
1.scanf()
所在头文件:stdio.h
语法:scanf(“格式控制字符串”,变量地址列表);
接受字符串时:scanf(“%s”,字符数组名或指针);
2.gets()
所在头文件:stdio.h
语法:gets(字符数组名或指针);
两者在接受字符串时:
1.不同点:
scanf不能接受空格、制表符Tab、回车等;
而gets能够接受空格、制表符Tab和回车等;
2.相同点:
字符串接受结束后自动加’\0’。
: 还有相当重要的一点,就是我在设定arr【】
的大小的时候,需要事先确定好你需要多大的空间来存放你所输入的字符串,比如刚才我如果输入一行n,程序就会出现输出乱码,下图是scanf函数时,如果用的是gets,会弹出报错窗口,这就是你输入的东西超过你事先定好的空间,也就是越界。
我这里用的是VS2013,可以看到我在程序中调用的是scanf_s函数和gets_s函数,这是人们约定了这么一个相比scanf和gets能安全点的函数,所以我在使用函数的时候后面的参数需要加上事先定好的空间长度。如果在早期的VC6.0版本的话,scanf函数时可以被越界的,这就造成了很多的bug。
: 虽然这些东西都很简单,但我们必须要搞清楚,避免稍不注意就会在写代码的时候出现错误。
可能在一些人看来,这下东西都是基本常识,但正是这样,我才希望大家能在以后的写简单代码的时候不会犯这样的错误,虽然这些函数现在用到的地方很少。
- gets和scanf函数初篇
- gets() 和scanf()函数
- scanf()函数和gets()函数
- 关于gets和scanf函数
- gets和scanf函数的区别
- 关于Scanf和gets函数的讨论
- gets和scanf函数的区别
- gets和scanf函数的区别
- gets和scanf函数的区别[转]
- gets和scanf函数的区别
- 用gets()和sscanf() 代替 scanf函数
- C语言gets()和scanf()函数
- gets和scanf函数的区别
- gets和scanf区别
- gets和scanf
- 关于gets()函数和scanf()函数的区别
- c语言scanf()函数和gets()函数的区别
- 论scanf函数和gets函数的微妙关系
- java int与integer的区别
- Mac安装ReactNative
- Toolbar修改高度后返回按钮不能居中的解决方法
- linux--初见
- c语言实现des加密
- gets和scanf函数初篇
- 189. Rotate Array
- LeetCode: Palindrome Pairs
- Qt程序打包成exe可执行文件图文教程
- Spring配置文件写法
- 共同学习Java源码--concurrent包黑科技--Executor和ExecutorService
- 电话面试2 20160325_1733_27min
- Android工具类——TimeUtils时间戳与时间字符串相互转换
- git版本控制管理的学习(一)——初步探索