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,一经查实,立即删除!

相关文章

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…

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

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

三星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 亩,现有生产车间两栋、研发楼一栋、检测楼一栋、食堂及倒班楼一栋、废品库一栋、门卫室两处、综合站房一处。主要从事电缆、电线的生产与加工。产业园区综合管理平台项目开发内容复杂&…

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…

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…

世界上覆盖范围最广的计算机网络是 ( ),世界上覆盖范围最广的计算机网络是()。...

摘要:部会天翼自动格将俱乐取消员资客户,世界上覆下列情况哪些出现时。围最包单包工总承责任单位对分安全程的承担位和分包生产。计算机网包分政基作业工分建筑础设程施为(劳务和市)和房屋分包施工。...部会天翼自动格将俱乐取消员资客户,世界…

CAM是利用计算机,利用DroidCam将手机摄像头打造成计算机摄像头

利用DroidCam将手机摄像头打造成电脑摄像头1.目的现在许多同学的电脑上没有摄像头,但是随着智能手机的普及,大多数同学都有带摄像头的手机。而智能手机的摄像头比电脑的usb摄像头的效果好很多。那可不可以把手机摄像头用在电脑上来网络聊天呢&#xff0c…

电大计算机应用技术基础视频,电大形成性测评-计算机应用技术基础01

电大形成性测评-计算机应用技术基础01 (7页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!15.9 积分01任务-在线作业试卷总分:100 测试时间:-- 单项选择题 …

北大计算机博进高校,他是北大第一位博士,留校任教却连做三件“傻事”,博导都没评上...

自北大1898年创办至今,早已度过了风雨百年,一路发展、创造辉煌,令人慨叹不已。身为我国名校的门面招牌之一,北大底蕴深厚、实力强劲,校园环境优美、师资力量雄厚,不知是多少学子可望而不可及的理想学府。在…

计算机打印过的文件在哪找到,请问如何在电脑里查找已经打印过的文件

满意答案苏mmkk2013.07.06采纳率:45% 等级:11已帮助:20600人如果你的系统是XP 的话查找电脑名称:在桌面“我的电脑”上点右键。第二个选项卡上有“计算机名”上面显示的有完整的计算机名,如果想更改的话&#xff0c…

tomcat服务器运行环境,win7怎么配置Tomcat服务器环境|win7系统配置Tomcat服务器环境的方法...

‍‍许多用户询问说win7旗舰版系统怎么配置Tomcat服务器环境?tomcat是什么?它一款轻量级免费开源的Web服务器,我们再使用tomcat时,最好配置一下环境变量。很多新手用户不知道怎么配置Tomcat服务器环境,安装配置Tomcat的方法和java有些相同&am…

心脏遥测监控系统服务器,基于ARM7的心电采集与远程传输系统设计

该系统设计的监护模块与医院内心电监护中心的心电实时监控服务器都工作于客户/服务器模式下。在工作状态下,心电数据接收转发器客户端应用程序,首先初始化以太网接口,然后主动与医院内心电实时监控服务器建立连接;连接成功后&…

linux装服务器系统,linux服务器系统安装

linux服务器系统安装 内容精选换一换安装完操作系统后的临时云服务器需要进行相关配置,并安装原生的XEN和KVM驱动,才能保证后续创建的云服务器正常使用。该任务指导用户完成Linux云服务器的相关配置与驱动安装,从而创建为Linux系统盘镜像。配…

服务器bios修改uefi,服务器 uefi bios设置

服务器 uefi bios设置 内容精选换一换对于不同的硬件设备,通过在BIOS中设置一些高级选项,可以有效提升服务器性能。服务器上的SMMU一般用来完成设备的地址转换,并且可以实现设备隔离,在虚拟化中很实用,但是在物理机测试…

越狱装源未能连接到服务器,科普cydia无法加载源地址插件安装错误解决方法及Cydia怎么备份shsh...

苹果越狱是不少iPhone用户的乐趣,而cydia也是苹果越狱的标志,不过有不少小伙伴却发现自己的,而且也会提示插件安装错误等,那么要怎么解决这个问题呢,不妨随小编一起来研究一下吧。关于cydia无法正常加载插件列表?加载…

思科虚拟机配置dhpc服务器,思科模拟器配置DHCP

第一步,在路由器连接PC0的那个端口f6/0配置ip为172.16.14.1,连接交换机的端口f0/0配置为172.16.13.1,连接服务器的端口f1/0配置为172.16.10.2。上代码:int f6/0ip address 172.16.14.1 255.255.255.0int f0/0ip address 172.16.13.1 255.255.…

artifacts屏蔽java文件输出_Java 是什么?

Java 是一种通用型的计算机编程语言,基于类实现了面向对象的编程范式,通过虚拟机实现了强大的跨平台能力。用 Java 写的代码,既可以在 Windows 操作系统上面运行,也可以在 UNIX、Linux、MacOS 等操作系统上面运行。 Java 代码会被…