mdsk.net
当前位置:首页 >> C语言中 为什么不建议用gEts,而用命令行输入 >>

C语言中 为什么不建议用gEts,而用命令行输入

gets输入的字符限制非常严重,实际应用价值不大..常用%s,进行字符串输入

gets会将输入回车前所有输入的内容取出来,存放到一个字符数组,包括空格/tab,无论这些内容被空格/tab分成了几段,gets都会将这行输入完完整整的放到数组中,通俗点说就是gets会取一行,读到换行为止。 scanf是格式化输入

gets()、puts() 都是针对字符串类型处理的,传入的参数是char *型,或char[]型 gets()是输入字符串函数,puts()是字符串输出函数 例如: char *a; gets(a); 或者: char a[10]; gets(a); 相当于: scanf("%s",a); 输出函数: puts(a); 相当于: pr...

在windows下运行程序时 输入组合键Ctrl+Z 在Linux下输入Ctrl+d 就会让程序读到一个EOF 对于gets来说碰到EOF返回NULL getchar()碰到EOF返回EOF 也就是-1

谈不上“危险”, gets() 函数从标准输入读入 一行文本,直到读到 新行符 或 EOF 字符 之前,不会停止读入文本。也就是:gets() 不检查边界。因此,当变量空间 小于 一行字符串 时, 使用 gets() 会造成 溢出,程序出错。 例如: #include int mai...

gets,scanf都会在末尾加上\0的,要不然字符串就没法结束了; 他们的不同在于,scanf碰到缓冲区里面的空字符(空格,tab,回车,换行就会截断并添加\0),而gets是要等回车才截断字符串并添加\0的 比如用输入字符串:abcdefg hijk回车 用scanf的话,...

#include #include int main() { char str[5]; while(1) { printf("[gets]str="); gets(str); printf("gets:str:%s,length:%d\n",str,strlen(str)); printf("scanf,str="); scanf("%s",str); getchar(); printf("scanf:str=%s\n",str,strlen(str...

gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针...

其实用scanf("%s",);和gets();本质上没有什么区别,都是将字符数据输入到制定的内存单元中。 假设定义有字符数组(C语言把字符串按字符数组处理)str[30],那么我们向里面输入字符就可以为: scanf("%s",str); gets(str); 他们都可以这样输出: ...

gets返回值是char *,你一定要用它,可以用char * 接收,然后迭代把char型数字转int型存储。但这样要判断还要处理位数,不麻烦么。 直接迭代scanf接收存储到int a,最后用判断把回车符号'\n'过滤掉,不简单么。

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com