scanf

长度限制

#include<stdio.h>
int main()
{
char food[5];
printf("Enter food");
scanf("%5s",food); //如果输入内容过长,则获取前5位字符串,
printf("enter food is:%s\n",food);
/* code */
return 0;
}

fgets

fgets接收char指针,强行限制用户输入字符串的长度

#include<stdio.h>
int main(){
char food[5]
printf("Enter favorite food:")
//food指针,接受字符串最大长度包括(\0),stdin表示数据来自键盘。
fgets(food, sizeof(food), stdin); }

这里food是数组变量所以可以通过sizeof获取数组的大小,如果food是个指针那么就需要手动指定长度了。

比较

1、是否限制用户输入的字符数?

scanf:可以在格式字符串指定长度。

fgets:强制用户输入字符的长度

2、是否支持多字段输入

scanf:可以接受多个字段,并且支持结构化数据的输入。

fgets:只允许输入一个字符串。

3、字符串中是否可以有空格

scanf:用%s读取字符串的时候,遇到空格停止,如果想要输入多个单词,就需要多次调用scanf。

fgets:可以读取整个字符串。

综上:如果需要输入由多个字段构成的结构化数据,可以使用scanf();而如果想要输入一个非结构化的字符串,可以使用fgets()。

scanf和fgets比较的更多相关文章

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

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

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

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

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

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

  4. scanf() gets() fgets()使用注意事项

    1.scanf() 遇到'\n'停止从输入缓冲区中接收,接收完后‘\n’还存在于缓冲区中.当输入的字符数少于缓冲区大小时,字符后面有自动补上‘\0’,当输入字符大于缓冲区时,也直接拷贝到缓冲中,因此缓 ...

  5. scanf 与fgets

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

  6. fgets和scanf的区别

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

  7. 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 ...

  8. Linux命令行上程序执行的那一刹那!

    转自:http://www.cppblog.com/cuijixin/archive/2008/03/14/44463.html by falcon<zhangjinw@gmail.com> ...

  9. C语言有哪些鲜为人知的特性?

    译注:本文摘编自 Quora 的一个热门问答贴. 请在linux系统下测试本文中出现的代码 Andrew Weimholt 的回复: switch语句中的case 关键词可以放在if-else或者是循 ...

随机推荐

  1. 常见的CSS样式

    常见的css样式 color 文字颜色 background-color 背景颜色 opacity 设置透明度 颜色: 光的三原色: 红 绿 蓝 三种颜色表示法: 名词表示法: red green b ...

  2. python简单页面爬虫入门 BeautifulSoup实现

    本文可快速搭建爬虫环境,并实现简单页面解析 1.安装 python 下载地址:https://www.python.org/downloads/ 选择对应版本,常用版本有2.7.3.4 安装后,将安装 ...

  3. visualSVN server 安装成功,但是无法连接,url打不开

    转自:https://www.oschina.net/question/878142_91825 点击开始–>程序->VisualSVN–>VisuaSVN Server Manag ...

  4. 阿里P7详细解答JVM性能调优之监控工具

    javap 和 javac javac -verbose 类名.java java -verbose 类名 javap -c 类名 javap -verbose 类名 JAVAP -HELP 用法: ...

  5. java - day014 - 编译期,运行期

    编译期 静态成员 私有变量 成员变量 运行期 非静态方法 package day1401; public class Test1 { public static void main(String[] ...

  6. 列表推导式中的各个元素的id并不一样

    列表推导式中的各个元素在不同的内存中,id不一样 # 列表推导式的不同id值 ----------------------------------------------------- T = [] ...

  7. VMware14虚拟机与宿主机建立通讯

    当我们在VMware14中运行虚拟机搭建实验环境就需要与我们的宿主机或另一台虚拟机连接通讯,下面我们就来看看如何建立通讯,实现虚拟机与宿主机.虚拟机与虚拟机互联互通. 准备环境:一台安装好VMware ...

  8. MyEclipse修改运行内存

    修改  myeclipse.ini -vmargs -Xmx1768m -XX:MaxPermSize=1320m -XX:ReservedCodeCacheSize=64m -Dosgi.nls.w ...

  9. python3 excel基本操作及格式设置

    #encoding=utf-8 ''' excel基本操作整理 ''' #openpyxl 版本2.5.4 from openpyxl import * import datetime as dt f ...

  10. MySQL服务器2

    1.sql的基本语法 对数据库 create database db1; 创建数据库 对表: create database t1(id int,name char(10)); 创建表 show cr ...