1、scanf()

  遇到'\n'停止从输入缓冲区中接收,接收完后‘\n’还存在于缓冲区中。当输入的字符数少于缓冲区大小时,字符后面有自动补上‘\0’,当输入字符大于缓冲区时,也直接拷贝到缓冲中,因此缓冲区大小应注意以免产生段错误。

2、gets()

  当输入的字符串低于缓冲区长度时,以‘\n’'\0'结尾,此时缓冲区中什么也没留下;当输入的字符串大于缓冲区长度时,也会全部存入缓冲区中,注意缓冲区大小以免产生段错误,此时缓冲区中什么也没留下。

3、fgets()

  从文件字节流中获取指定长度的字符串并以‘\0’结尾,比如要获取10个字符,实际上获取9个字符加一个'\0'

<textarea readonly="readonly" name="code" class="c"> 

#include <stdio.h>

int main()
{
char buff[10];
printf("input string:");
fgets(buff, 10, stdin);
printf("%s\n", buff);
getchar();

return 0;
}

</textarea>

scanf() gets() fgets()使用注意事项的更多相关文章

  1. C语言输入语句scanf与fgets linux下

    1.测试使用scanf的一个例子: #include "stdio.h" #include "string.h" int main() { char name[ ...

  2. scanf和fgets比较

    scanf 长度限制 #include<stdio.h> int main() { char food[5]; printf("Enter food"); scanf( ...

  3. C中scanf/gets/fgets的区别

    功能:同样是获取字符串. 区别: scanf 遇到空格/回车/Tab键认为输入结束, 但是空格/回车/Tab键仍会留在输入的缓冲区中.常见的是使用getchar(),处理scanf的后事:如果想要清除 ...

  4. scanf gets fgets区别与联系 puts fputs printf区别与联系

    组一:scanf( )函数 gets( )函数    fgets()函数都可用于输入字符串, 组二:printf( )函数 puts( )函数 fputs()函数则用于字符串的输出. 两组内部函数各有 ...

  5. scanf 与fgets

    scanf: 1.以输入字符串也可以输入数字 . 2.遇到空格就停止.3.会有segmentation fault. fgets: 1.只能输入字符串.2.回车才会停止.3.不会有segmenntat ...

  6. scanf("%c", &ch)和scanf(" %c", &ch)和scanf("%s", str)的注意事项

    scanf("%c", &ch)和scanf(" %c", &ch): %c会读取回车和空格,所以一定要使用后者,即在%c前面加一个空格. %s ...

  7. fgets和scanf的区别

    fgets和scanf的区别 1.测试使用scanf的一个例子: #include "stdio.h" #include "string.h" int main ...

  8. hdu 1036 (I/O routines, fgets, sscanf, %02d, rounding, atoi, strtol) 分类: hdoj 2015-06-16 19:37 32人阅读 评论(0) 收藏

    thanks to http://stackoverflow.com/questions/2144459/using-scanf-to-accept-user-input and http://sta ...

  9. 羽夏闲谈—— C 的 scanf 的高级用法

    前言   今天看到博友发了个有关scanf的使用的注意事项,就是讨论缓冲区残存数据的问题,用简单的代码示例复述一下: #define _CRT_SECURE_NO_WARNINGS #include ...

随机推荐

  1. S2 深入.NET和C#编程 机试测试错题积累

    机试第一题:                              //创建文件流(路径 模式) FileStream fa = new FileStream(@"D:\\S2第一次全文 ...

  2. Linux学习 : Socket 网络编程入门

    一.socket()函数 int socket(int domain, int type, int protocol); domain:即协议域,又称为协议族(family).常用的协议族有,AF_I ...

  3. HDU 2602 Bone Collectors(背包问题,模版)

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. Docker Kubernetes(K8s)简介

    入职了新公司,使用了Docker和K8s,需要有一个基础的了解,对网络上相关信息进行了简单总结. 一Docker 1简介: Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就 ...

  5. Java流对象理解

    马士兵老师,曾在Java的学习过程中,将Java的流比作管道,认为很贴切,在此笔者也建议读者在学习过程中作类似比喻,形象化的学习 Java根据数据流向的不同分为输入流和输出流: Java根据处理数据类 ...

  6. Unity最新版打包AssetBundle和加载的方法

    一.设置assetBundleName二.构建AssetBundle包三.上传AssetBundle到服务器四.把AssetBundle放到本地五.操作AssetBundle六.完整例子七.Asset ...

  7. <Hadoop重装><centos><NameNode失效>

    Overview 记一次真真切切的NameNode单点故障. 学校机房着火之后,刀片机上的四台服务器,唯独就NameNode彻底宕掉了,去机房看了下硬盘都坏了.. 所以只能换一个master咯.基本上 ...

  8. webrtc 音频一点相关知识

    采样频率:  44.1kHz ,它的意思是每秒取样44100次   .8kHz    8000次,  16kHz   160000次 比特率:  比特率是大家常听说的一个名词,数码录音一般使用16比特 ...

  9. 移动端与PC端的触屏事件

    由于移动端是触摸事件,所以要用到H5的属性touchstart/touchmove/touched,但是PC端只支持鼠标事件,所以此时可以这样转换 var touchEvents = { touchs ...

  10. linux 系统命令和方法

    1.EXPORT EXPORT 依赖库===============export LD_LIBRARY_PATH=/opt/export LD_LIBRARY_PATH=/usrlib/ 2.查看分区 ...