我是靠谱客的博主 文艺小猫咪,最近开发中收集的这篇文章主要介绍linux中c语言scanf,C语言输入语句scanf与fgets linux下,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、测试使用scanf的一个例子:

#include "stdio.h"

#include "string.h"

int main()

{

char name[10];

scanf("%s", name);

puts(name);

return 0;

}

编译、调用如下:

可以看到第二次,由于输入的字符串长度,导致Abort

2、同样的一个fgets的例子:

#include "stdio.h"

#include "string.h"

int main()

{

char name[10];

fgets(name, 10, stdin);

puts(name);

return 0;

}

编译、调用如下:

并没有像scanf那样出现Abort的情况,而是对字符串进行了截断

3、对比scanf和fgets:

a) scanf不限制用户的输入,导致会出现上面测试例子的Abort

fgets限制用户的输入,超过之后进行截断字符串的操作,避免了Abort,但是要设置一个缓冲区长度值

b) scanf可以使用诸如scanf("%d/%d", &x, &y),这样的形式,让用户只需要输入1/3便可以分别得到x、y的值:

#include "stdio.h"

int main()

{

int x;

int y;

scanf("%d/%d", &x, &y);

printf("x value : %d, y value : %dn", x, y);

return 0;

}

但是fgets,无论如何,每次都只能读入一个变量,而且只能是字符串(毕竟说是str嘛!),像下面这样的形式,编译是通不过的:

#include "stdio.h"

int main()

{

int x;

fgets(x, sizeof(x), stdin);

printf("x value : %d", x);

return 0;

}

c)字符串中的空格

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

fgets()直接接收字符串中的空格

4、总结

由于3提到的一些区别,所以在使用scanf()和fgets()的时候,要注意情况。

转载于:https://blog.csdn.net/zengraoli/article/details/19540153

C语言实现—学生成绩管理系统(Linux下运行)

开发环境:Linux 开发语言:C 相关文件下载: 码云:https://gitee.com/ikaros-521/c_project/tree/master/%E5%AD%A6%E7%94%9F%E ...

【转】Go语言入门教程(一)Linux下安装Go

说明 系统是Ubuntu. 关于安装 下载安装包 当前官方下载地址是https://golang.org/dl/,如果不能访问,请自行FQ,FQ是技术工作者的必备技能. 安装 tar -xzvf go ...

Linux C编程之一:Linux下c语言的开发环境

---恢复内容开始--- 今天开始根据Linux C编程相关视频的学习所做的笔记,希望能一直坚持下去... 1.开发环境的构成 编辑器:VI: 编译器:选择GNU  C/C++编译器gcc: 调试器: ...

Linux 下LNMP环境搭建_【all】

LNMP = Linux + Nginx + Mysql + PHP 1.0 Linux环境搭建 Linux 系统安装[Redhat] 1.1. FastCGI介绍 1.什么是CGI(common g ...

Linux 下安装 jdk压缩包

按 esc  退出  记得 输入 :q    记得 : Linux下安装jdk 把压缩文件放在 桌面的soft 下 在usr目录下新建文件夹Java,把文件复制到 usr/java 更改下路径! 3 ...

linux下串口通信与管理

linux下的串口与windows有一些区别,下面将介绍一下linux下串口通信管理 查看是否支持USB串口: #lsmod | grep usbserial 如果没有信息:sudo apt-get ...

C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()

本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该 ...

Linux下c语言实现myod

首先根据od要输出16进制的功能,以及c语言中文件的打开读取等函数,编写了如下代码. #include #define N 1000 int main() { int c ...

windows下的c语言和linux 下的c语言以及C标准库和系统API

1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...

随机推荐

几种垂直居中的方式及CSS图片替换技术

由于块级元素的高度是可以设置的,所以对于块级元素的垂直居中比较简单. 方法一: 在不定高的情况下,把元素的上下内边距设为同一个值即可实现,即padding :10px   0; 以上方法针对块级元素和 ...

Linux 命令与文件的搜寻

平时会偶尔忘记一些命令或者文件,下面的这些命令能够帮我们快速的找到命令或者文件 1. 命令的搜寻 命令:which 功能:在PATH配置的目录下搜寻命令 用法:which [-a] [command] ...

spring源码学习之路---IOC实现原理(三)

作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章我们已经初步认识了Be ...

Python爬虫(一) 信息系统集成及服务资质网

警告:不要恶意的访问网站,仅供学习使用! 本教程实例只抓取信息系统集成及服务资质网的企业资质查询. 1. 抓包 打开谷歌浏览器的开发者工具并访问该网站,过滤请求后找到请求数据的包. 1.1 找到相应封 ...

2016 - 1 - 20 runloop学习(2)

一:CFRunLoopModeRef 1. CFRunLoopModeRef带表RunLoop的运行模式 2. 一个Runloop可以有若干个mode,每个mode又包含若干个sourse,timer ...

动态加载so文件

在开发过程中,经常会用到第三方库,比如地图.视频.文档编辑.图表之类.依赖这些库,需要添加其SDK,有时需要用到jni层的So文件,比如百度地图等. 那么问题来了,如果两个不同的库之间的so文件发生冲 ...

掌握JS

1.原生的js,好比全真教的武功,一步步从基础开始(先练气再御剑),很长一段时间内和jquery有很大差距,掌握以后发现jquery只不过是另外一种武功,看一遍既会.且当学原生到一定程度之后,可以自创 ...

高性能MySql进化论(一):数据类型的优化_上

在数据库的性能调优的过程中会涉及到很多的知识,包括字段的属性设置是否合适,索引的建立是否恰当,表结构涉及是否合理,数据库/操作系统 的设置是否正确…..其中每个topic可能都是一个领域. 在我看来, ...

Mac OS X下HomeBrew安装卸载

1.卸载 cd `brew --prefix` rm -rf Cellar brew prune rm `git ls-files` rm -r Library/Homebrew Library/Al ...

nginx简单的命令

nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx nginx -t #测试配置是否有语法错误 nginx [-?hvVtq] [-s si ...

最后

以上就是文艺小猫咪为你收集整理的linux中c语言scanf,C语言输入语句scanf与fgets linux下的全部内容,希望文章能够帮你解决linux中c语言scanf,C语言输入语句scanf与fgets linux下所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部