gets();getschar();fget();
gets():
原型:char *gets(char *buffer) ;
功能:从stdlin中获取获取字符串一直到换行符或者遇到EOF为止,但换行符不被录取,会将换行符替换成‘\0’来表示字符串的结束
返回值:如果读取成功会返回buffer指针,如果遇到EOF或者发生错误会返回NULL,当遇到NULL需要调用ferror()和feof()来判断是遇到EOF还是发生了错误
ps:该函数读取一直读到遇到换行符为止,所以很容易发生溢出的情况,如果发生溢出,会覆盖堆栈中的内容,改变不相关的变量,我们可以使用fget()替换gets(),为了向后兼容,不会将换行符放入缓冲区中。
- #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,这个经常用于调试中
- #include <string>
- #include <iostream>
- 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地址
- #include <string.h>
- #include <stdio.h>
- #include <iostream>
- 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;
- }
执行结果为:
gets();getschar();fget();相关推荐
- 【python】使用property函数为类创建可管理属性fget\fset\fdel
import mathclass Circle:def __init__(self, radius):self.__radius = radius # 设置私有属性,不让用实例.__radius访问d ...
- Python标准库:内置函数property(fget=None, fset=None, fdel=None, doc=None)
本函数是设置类成员的属性.参数fget是获取类成员的属性值:参数fset是设置类成员的属性值:fdel是删除类成员:参数doc是设置属性的文档字符串.通过这个函数的方式,可以实现类成员变量隐藏的方式, ...
- Python 内建函数 - property(fget=None, fset=None, fdel=None, doc=None)
函数功能 参数说明 用法 版本变更 函数功能 返回一个property属性 参数说明 fget是一个用来获取属性值的函数: fset是一个用来设置属性值的函数: fdel是一个用来删除某个属性值的函数 ...
- C语言--gets()、gets_s()、fget()的比较
一.gets()函数 在读取字符串时,scanf()和转换说明%s只能读取一个单词.可是在程序中经常要读取一整行输入,而不仅仅是一个单词.许多年前,gets()函数就用于处理这种情况.gets()函数 ...
- 数组名以及fget函数()模仿用法
一: 数组名即数组第一个元素的地址. #include <stdio.h> //int main() //{ // int a; // int *p = &a; // ...
- 第8.27节 Python中__getattribute__与property的fget、@property装饰器getter关系深入解析
一. 引言 在<第7.23节 Python使用property函数定义属性简化属性访问的代码实现>和<第7.26节 Python中的@property装饰器定义属性访问方法gette ...
- Python使用property函数定义属性访问方法如果不定义fget会怎么样?
我们知道Python使用property函数定义属性访问方法时的语法如下: 实例属性=property(fget=None, fset=None, fdel=None, doc=None) 而是要@p ...
- fget函数读取一行数据,非二进制文件 -- linux
fget函数的原型如下:char *fgets(char *buf, int n, FILE *fp) 功能:从文件流读取一行,送到缓冲区,使用时注意以下几点: 1.当遇到换行符或者缓冲区已满,fge ...
- linux 内核 fget,fgets函数 linux中fgets函数怎么用
一个函数该如何使用?我们最先要了解的就是这个函数的语法以及具体的含义是什么,所以今天我们就来看一看fgets函数在实际的运用过程当中是如何使用的,希望能给大家带来一定的帮助. fgets函数--lin ...
最新文章
- 移动端框架如雨后春笋,你该如何选择?
- InheritParasitic.js
- linux下使用free命令查看实际内存占用
- python训练词库_在Python中训练NGramModel
- json api_JSON模式在构建和部署API中的作用
- 【Arduino】开发入门【八】舵机操作+源代码
- python必备入门代码-小白入门Python开发,必备技能有哪些?
- 快速发布发包平台技术论坛
- evaluatejavascript不起作用_android4.4 evaluateJavascript 到android2.X上不能调用的问题
- 拓端tecdat|R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
- Linux 查看网卡配置速率
- dell笔记本外接显示器_戴尔笔记本怎么连接外接显示器
- 【条形码识别】条形码中数字的识别的matlab仿真
- 手机更换证件照背景色只需1分钟,别去打印店花冤枉钱了
- 机器视觉软件开发SDK
- 地图中的鼠标移动响应
- 灭了珊瑚虫,OOXX了SOFF,下一个是谁?
- 5.JavaSwing知识点----(1)swing中的容器
- Excel 2010 SQL应用116 分组统计之GROUP BY续
- reactive和ref的特性和区别