c语言gets n,c语言中gets ,getschar 和fgets 的用法及三者之间的差别

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

wkmpbg846

推荐于 2018.02.27

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:45%    等级:8

已帮助:362人

gets():

原型:char *gets(char *buffer) ;

功能:从stdlin中获取获取字符串一直到换行符或者遇到EOF为止,但换行符不被录取,会将换行符替换成‘\0’来表示字符串的结束

返回值:如果读取成功会返回buffer指针,如果遇到EOF或者发生错误会返回NULL,当遇到NULL需要调用ferror()和feof()来判断是遇到EOF还是发生了错误

ps:该函数读取一直读到遇到换行符为止,所以很容易发生溢出的情况,如果发生溢出,会覆盖堆栈中的内容,改变不相关的变量,我们可以使用fget()替换gets(),为了向后兼容,不会将换行符放入缓冲区中。

[cpp] view plaincopy

#include "stdio.h" //这个头文件包含gets()函数

int main()

{

char str1[15];

gets(str1);

printf("%s\n", str1);

getchar() ;

return 0;

}

此时就可以从键盘上读取一个字符串到str1中

ps:scanf("%s", str1) ;这样也可以输入字符串,如果遇到空格符就会认为字符串结束了,空格后的字符作为下一个字符串,但gets()会遇到换行符为止

*****************************

getchar():

功能:这个函数由宏#define getchar() getc(stdin) 从标准输入中读取字符,等待用户输入字符串一直到换行符为止,用户输入的字符将会存入键盘缓冲区中包括换行符,他会读取第一个字符,返回第一个字符的ASCII码,getchar()会从缓冲区中读取剩下的字符一直到读完为止,然后等待如果输入换行符

ps:getch()和getchar()差不多,但getch()在用户输入后就立即返回了不等待用户输入换行符,会返回输入字符的ASCII码,如果错误就-1,这个经常用于调试中

[cpp] view plaincopy

#include

#include

int main()

{

int c ;

int a ;

a = getchar() ;

while((c = getchar()) != '\n')

{

printf("%c", c) ;

}

getchar() ;

return 0 ;

}

fgets():

函数原型:char *fgets(char *buf, int bufsize, FILE *stream);

从文件结构指针stream中读取数据,每次读取bufsize-1个数据,第bufsize个赋值成'\0',如果不足bufsize个数据则返回,如果遇到eof或者错误则返回Null,如果成功就返回buf地址

[cpp] view plaincopy

#include

#include

#include

int main()

{

FILE *stream;

char string[] = "Love, I Have\nSince you can do it.";

char msg[20];

/*

*FILE * fopen(const char * path,const char * mode);

*以w+的方式:以读写的方式打开,如果有文件则清零,没有则要新建一个新的 */

stream = fopen("DUMMY.txt", "w+");

/*

*size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

*buffer:代表要写入的数据

*size:写入每项的字节数

*count:写入的项数

*stream:要写入的字节流

*/

fwrite(string, strlen(string), 1, stream);

/* 定位到文件的开始 */

fseek(stream, 0, SEEK_SET);

fgets(msg, 6, stream);//此时文件指针会第六个字符

printf("%s\n", msg);

fgets(msg, 20, stream);

printf("%s", msg);

fseek(stream, 0, SEEK_SET);

fgets(msg, 23, stream);

printf("%s", msg);

fclose(stream);

system("pause") ;

return 0;

}

11分享举报

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南工院linux考试题库,操作系统复习题..doc

操作系统复习题.第一章 操作系统概述学习指导:本章主要介绍操作系统的基本概念、特性和分类,从操作系统的地位和作用两个方面给出了操作系统的描述性定义。读者应当注意操作系统程序的特殊性,以及操作系统与硬件和其它软件之间的关系,理解操作…

android电话系统,Android电话系统之-rild.doc

Android电话系统之-rild.docAndroid电话系统之-rildRild是Init进程启动的一个本地服务,这个本地服务并没有使用Binder之类的通讯手段,而是采用了socket通讯这种方式。RIL(Radio Interface Layer)Android 给出了一个ril实现框架。由于Android开发者使用的…

android出现错误,在做一个安卓的一个登陆操作的时候,出现错误

源代码如下:/**//*author Administrator**/package com.example.login;//import org.testng.annotations.Test;//import org.testng.annotations.BeforeClass;//import org.testng.annotations.AfterClass;import io.appium.java_client.AppiumDriver;import io.app…

android中svn插件安装,AndroidSDK安装SVN插件问题解决

工具版本信息:Eclipse4.2ADT23.0Subclipse1.10,插件安装地址:http://subclipse.tigris.org/update_1.10.x问题一报错信息如下:Cannot complete the install because one or more required items could not be found.Software being installed: Subversion Revision Graph 1.1.1…

android 点击空白退出,Android 点击空白处隐藏键盘

方法一:使用android的分发机制(代码稍微有点多)/*** 实现点击空白处,软键盘消失事件* param ev* return*/Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() MotionEvent.ACTION_DOWN) {// 获得当前得到焦点的View&#…

鸿蒙系统的变化,鸿蒙系统没变化的背后

原标题:鸿蒙系统没变化的背后鸿蒙系统发布以后被很多人吐槽,说是没什么变化,和之前体验的安卓系统简直一模一样,真的失望至极。其实,鸿蒙系统还是从底层做出了改变,只不过没有变了界面和运行方式而已。那么…

三星s2 硬刷Android 8,三星T710(GALAXY Tab S2 8.0)一键救砖教程,轻松刷回官方系统...

三星T710(GALAXY Tab S2 8.0)手机变砖了怎么办?对于经常刷机的安卓玩家来说,碰到刷机失败导致三星T710(GALAXY Tab S2 8.0)手机无法启动甚至无法进入recovery都是在所难免的事,这个时候我们就需要用到奇兔线刷大师线刷救砖功能了,它能轻松实…

鸿蒙工业互联网,工业互联网 3D 展示平台

原标题:工业互联网 3D 展示平台项目简介产业园区占地约为 158.46 亩,现有生产车间两栋、研发楼一栋、检测楼一栋、食堂及倒班楼一栋、废品库一栋、门卫室两处、综合站房一处。主要从事电缆、电线的生产与加工。产业园区综合管理平台项目开发内容复杂&…

基于android的交流平台,基于Android的移动学习交流平台的设计与实现

摘要:随着移动互联网技术的不断发展,智能手机的不断普及,现在越来越多的人通过手机等智能设备来进行学习和交流。为了满足教师和学生实时的沟通交流,提高学生的学习兴趣和效率,本文设计了基于Android的移动学习交流系统。本文首先通过Openfire完成了客户端与服务器端…

weex监听android返回键,weex使用手册

Native DOM APIsUpdated time: 14/06/2017Weex 在 JS 引擎中,为每个页面都提供了一套 Native DOM APIs,这套接口和 HTML DOM APIs 非常接近,利用这套接口我们可以通过 JavaScript 控制 native 的渲染逻辑。而且 Weex 上层的 Vue 2.0 也是基于…

lean软件Android有吗,leanchat-android

LeanChat Android 客户端简介LeanChat 是 LeanCloud 实时通信 组件的 Demo,通过该应用你可以学习和了解 LeanCloud 实时通信功能。效果截图Leanchat 项目构成如果你从 github clone 速度很慢,可以从 这里 下载项目源码压缩包。部署创建应用注册并登录 Le…

华为系统10.0是鸿蒙吗,暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角...

原标题:暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角华为鸿蒙系统由于顶着“自研”的光环,自曝光以来便受到科技圈的追捧,虽并未推出但已经有“众星捧月”的迹象。媒体追逐鸿蒙系统自然是为了热度和流量&#x…

a4纸在html的像素,打印常识:A4纸张在显示器上应该要多少像素?

A4纸的尺寸是210mm*297mm,也就是21.0cm*29.7cm,而1英寸2.54cm,如果屏幕DPI分辨率为72像素/英寸,换算一下:相当于1cm可呈现 (72px/2.54cm) 28.34px下面是一些常用分辨率下A4纸在屏幕上的像素尺寸:分辨率是7…

用HTML编写教学评估系统,在线教学质量评价系统的设计与实现

《在线教学质量评价系统的设计与实现.doc》由会员分享,可免费在线阅读全文,更多与《在线教学质量评价系统的设计与实现》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、MWEAVERMA入门与提高[M]清华大学出版社,[]李国涛SQLS…

微型计算机方面的论文,微型计算机论文.doc

计算机指令系统与中国CPU的发展本学期我们大致了解了一些微型计算机的基本原理,包括微机处理器、微型计算机和微型计算机系统的定义、微处理器的发展概况,以及微机处理器的分类。其中我们比较全面的学习了指令系统一 计算机指令系统1 计算机指令系统的发…

辩论计算机未来不能取代书本的问题,电脑不能取代书本辩论会材料.doc

辩论会材料NO.1资料收集:沉默可以 注意文明:要多点开花,引用一些名言等,千万不要胡搅蛮缠,揪住一个小点不放,这会给评委不好的印象!资料准备一定要充分,最好直接反驳对方,不行就坚持…

计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲

事业单位计算机专业知识招考大纲对照复习事半功倍(一)计算机类计算机科学技术基础第一章计算机基础知识一、计算机的特点、分类及其应用二、信息编码与数据表示;数制及其转换;算术运算和逻辑运算三、计算机硬件系统的组成及其基本工作原理四、计算机软件…

自学计算机软件及应用,[计算机软件及应用]JavaEE自学材料.pdf

[计算机软件及应用]JavaEE自学材料目录隔行变色表格——jQuery 实现 2隔行变色表格——javascript 实现4提示框HelloWorld——jQuery 实现5改变文字背景的颜色——jQuery 实现 6jQuery-添加元素7jQuery-页面信息隐藏及显示 10jQuery-导航菜单 11jQuery-全选&反选 13利用ser…

wether.html5.qq.com,人教版英语九年级全一册Unit 1单元测试卷及参考答案解析(含听力...

UNIT 1 达标测试卷时间:120分钟 满分:150分第一卷 听力部分(30分)一、关键词语选择(共5小题;每小题1分,满分5分)1. A. note B.nose C. notice2. A. repair B. report C.repeat3. A. widely B. quickly C.wisely4.A. screen B.s…