gets()函数和scanf()对比

先看代码:

#include<stdio.h>
int main(void){char a1[10], a2[10],a3[10];scanf( "%s%s",a1,a2);
//gets(a2);gets(a3);puts(a1);puts(a2);puts(a3);
//  printf("%s\n",ch1);
//  printf("%s",ch2);printf("end..."); return 0;
}


再看一段代码:

#include<stdio.h>
int main(void){char a1[10], a2[10],a3[10];scanf( "%s",a1);gets(a2);gets(a3);puts(a1);puts(a2);puts(a3);
//  printf("%s\n",ch1);
//  printf("%s",ch2);printf("end..."); return 0;
}

a. 可以看到a1中放的是joncy, scanf是用空格来结束的。 从结果中来看, scanf在读完之后空格还在缓冲区中。 而gets是接收空格的,所以第二张图中输出的 a2 前有空格存在。

b. 从第一张图中, 还可以看出scanf也不识别回车, 同样也把回车留在了缓存区中。 而gets是接收回车的, 所以第一张图中的 a3 输出的是回车。

看代码:

#include<stdio.h>
int main(void){char a1[10],a2[10],a3[10],a4[10];gets(a1);gets(a2);gets(a3);gets(a4);puts(a1);puts(a2);puts(a3);puts(a4);printf("end...")return 0;
}


c. 这个图可以看到,gets函数能够接收字符串, 而且不把回车符号留在缓存区中。

#include<stdio.h>
int main(void){char a1[10];gets(a1);char c = getchar();puts(a1);printf("%c\n",c);printf("end...");return 0;
}

#include<stdio.h>
int main(void){char a1[10],a2[10];gets(a1);char c = getchar();puts(a1);printf("%c\n",c);scanf("%s",a2);char c2 = getchar();puts(a2);printf("%c",c2);printf("end...");return 0;
}


d. 要注意这里puts自己把回车符吸收了,所以要等待输入。但是scanf没有,所以c2是换行符。

注:gets函数把字符串输出到标准输出设备,将’\0’转换为回车换行。但是scanf不会,末尾还是’\0’,且空格,换行或者tab都会留在缓存区。

这是一段百度词条的代码:


> #include <stdio.h>
> #include <conio.h> int main(void) {
>     int i;
>     char string[20];
>     for(i=0;i<10;i++)
>         string[i]='a';
>     puts(string);
>     getch();
>     return 0; }

这是运行结果:

确实我们看到, gets看不到 ‘\0’ 是不会结束的。


#include <stdio.h>
#include <conio.h>
/*字符串的末尾\0不会输出如果在%c的情况下 gets()把换行符吸收转换成\0
*/
int main(void) {int i;char string[10];
//     for(i=0;i<10;i++)
//         string[i]='a';
gets(string);for(i=0;i<10;i++)printf("%d",string[i]);// getch();return 0; }

编程中遇到的问题:
scanf("%s,%s",a1,a2); 千万不要这样写,字符串输入最好分开写,或者把逗号去掉。

本文引用百度词条:https://baike.baidu.com/item/puts/4747927?fr=aladdin

更多干货文章,编程资源,请关注公众号『Carry互联网笔记』

函数gets()的用法相关推荐

  1. MSSQL Sql加密函数 hashbytes 用法简介

    原文:MSSQL Sql加密函数 hashbytes 用法简介 转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashb ...

  2. 字符串函数用法 php,PHP字符串函数print()的用法

    print (PHP 4, PHP 5) print - 输出字符串 说明 int print ( string $arg ) 输出 arg. print 实际上不是一个函数(它是一个语言结构),因此 ...

  3. ROW_NUMBER() OVER函数的基本用法用法

    ROW_NUMBER() OVER函数的基本用法用法 转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html 语法 ...

  4. python用psf函数_Python 嵌套函数(高级用法)

    Python 嵌套函数(高级用法) 一.嵌套函数(高级用法) 1.嵌套函数 函数的嵌套调用是在"函数调用中再调用其他函数".也就是说:函数嵌套允许在一个函数中调用另外一个函数.如下 ...

  5. php数组函数及用法,php数组函数 in_array 的用法及注意事项

    php中操作数组的函数很多,in_array就是其中一个. in_array函数 用于检查是否存在一个值的数组,即它可以判断当前数组中是否存在一个指定的值. in_array (PHP 4, PHP ...

  6. python中tile的用法_python3中numpy函数tile的用法详解

    tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...

  7. 【转】typedef函数指针的用法(C++)

    原文: typedef函数指针的用法(C++) 代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字. 不同点:typedef 在编译时被解释,因 ...

  8. typedef 函数指针的用法

    进入正文: 代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字. 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文 ...

  9. PHP错误处理函数set_error_handler()的用法

    定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数. 该函数用于创建运行时期间的用户自己的错误处理方法. 该函数会返回旧的错误处理程序,若失败,则返回 null. 语 ...

  10. Python正则替换字符串函数re.sub用法示例(1)

    本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它 ...

最新文章

  1. [转] web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!
  2. 泛架构之于外包IT工程
  3. 创业路上有指引,永洪CEO给企业服务型创业公司的融资建议
  4. php cli spl_autoload_register,PHP spl_autoload_register 自动加载方法浅析
  5. GDCM:尝试修复损坏的J2K / DICOM的测试程序
  6. java序列化_Java序列化详解
  7. babel6升级到babel7
  8. 深度思考的能力,决定了你能走多远
  9. Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例
  10. 语言条件语序心得_考研分享 | 王远新语言学教程要点总结(第五章)
  11. 使用 Fabric 自动化部署 Django 项目
  12. 数据结构之单链表的整表创建头插法
  13. python双重for循环 列表推导式_Python轻量级循环-列表推导式
  14. python读取math_python调用通达信公式,python读取通达信公式结果
  15. java struts2教程_Struts2学习教程之入门小白的开始基础
  16. java date获取24点_获取0点和24点时间戳的方式
  17. python set集合排序_Python Set集合
  18. 机器学习之理解支持向量机SVM
  19. win7系统一键还原教程
  20. 3G到5G,运营商的“失落十年”

热门文章

  1. 老猿学5G扫盲贴:PDU协议数据单元、PDU连接业务和PDU会话的功能详解
  2. 机器人上单神装_LOL无敌神钩机器人出装解析 钩到你怀疑人生
  3. C语言绘图:可爱叮当猫
  4. mysql查询数据库创建语句是_查询数据库语句
  5. 【githubshare】基于「源样黑体」进行开发设计,整体风格看起来清晰自然
  6. 从心理学看手游价值是如何体现的
  7. echarts 饼图引导线尾部画圆入坑
  8. java split 问题_java split函数的几个问题
  9. js移除html指定id元素,JavaScript按ID删除元素
  10. 面试总结(堆、UDP、voliate)