gets与fgets的区别

news/2024/12/4 17:12:09/

简单来说
gets——从标准输入接收一串字符,遇到’\n’时结束,但不接收’\n’,把 ‘\n’留存输入缓冲区;把接收的一串字符存储在形式参数指针指向的空间,并在最后自动添加一个’\0’。
getchar——从标准输入接收一个字符返回,多余的字符全部留在输入缓冲区。
fgets——从文件或标准输入接收一串字符,遇到’\n’时结束,把’\n’也作为一个字符接收;把接收的一串字符存储在形式参数指针指向的空间,并在’\n’后再自动添加一个’\0’。
综上,gets是接收一个不以’\n’结尾的字符串,getchar是接收任何一个字符(包括’\n’),fgets是接收一个以’\n’结尾的字符串。

在man手册中得到信息

#include <stdio.h>

   char *fgets(char *s, int size, FILE *stream);char *gets(char *s);

gets中的参数s 是读取键盘输入的字符串
而且无法读取换行符
空格和符号都能读到

fgets就是从特定的流中读取字符串

需要注意的是,用gets的时候肯定要先动态分配内存

附上一段代码

#include<stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{/*FILE *fp=fopen ("./1.txt","r");if(fp==NULL)perror("[err]");		*/FILE *fp2=fopen ("./txt2","w");if(fp2==NULL)perror("[err]");		char *ch;int i;ch=(char *)malloc(10*sizeof(char));for(i=0;i<5;i++){gets(ch);printf("the strength is %d\n",strlen(ch));(void)fputs(ch,fp2);}fclose(fp);return 0;
}

编译运行结果如下
在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/544030.html

相关文章

getit

本逆向题还是源码分析&#xff0c;通过源码追出flag&#xff0c;下面步入正题 0x01源码分析 int __cdecl main(int argc, const char **argv, const char **envp) {char v3; // al__int64 v5; // [rsp0h] [rbp-40h]int i; // [rsp4h] [rbp-3Ch]FILE *stream; // [rsp8h] [rbp…

阶段性复习 迭代器, Lambda表达式, 泛型, 单例模式

迭代器&#xff08;Iterator&#xff09;是一种设计模式&#xff0c;用于顺序访问集合中的元素&#xff0c;而不需要了解集合内部的结构。 迭代器模式将元素的遍历行为和集合类解耦&#xff0c;使得可以在不修改集合类的情况下遍历集合。 具体来说&#xff0c;一个迭代器对…

遍历$.each()和$().each()用法

jQuery $.each(obj,function(n,value) 遍历用法 对象的遍历 js 代码部分 <script type"text/javascript">$(function() {var $tbody $("tbody");var html "";//前提必须是对象&#xff0c;一般情况下&#xff0c;后台传过来json字符串&…

$.each()和$().each(),以及forEach()的用法

1.forEach是js中遍历数组的方法&#xff0c;如下 var arr[1,2,3,4]; arr.forEach(function(val,index,arr){//val为数组中当前的值&#xff0c;index为当前值的下表&#xff0c;arr为原数组arr[index]2*val; }); console.log(arr);//结果是修改了原数组&#xff0c;为每个数乘…

forEach和$.each()以及$().each()的用法

forEach&#xff1a;即Array.prototype.forEach&#xff0c;这是ES5中对数组新增的方法&#xff0c;等同于过去的for循环遍历数组。用法&#xff1a;arr.forEach(function(value,index,array){...}),其中的function中有按个参数&#xff0c;value为数组中的值&#xff0c;index…

etags 用法

(本文参考http://www.emacs.cn/Doc/Etags&#xff0c;并根据自己的使用情况做了些微修改。) 1. etags 基本用法 在emacs里可以用etags命令生成emacs专用的tags文件&#xff0c;有了此文件之后便可以使用一些emacs tags的命令&#xff0c;比如对于编辑C/C程序的人员可以方便的定…

Easter Eggs

题目链接&#xff1a;Easter Eggs 显然可以二分。 然后怎么check呢&#xff1f;显然我们把距离小于mid的点连起来&#xff0c;那么就相当于找一个最大独立集&#xff0c;然后最大独立集的个数要大于等于n。 然后因为连边的只是蓝色和红色之间&#xff0c;所以这是一个二分图&…

$.each() 和 $(data).each()的使用

$.each() 和 $(data).each()的区别 二者都是循环的一种处理 $(data).each()主要用于DOM节点的循环&#xff0c;也可用于一个数据对象的循环&#xff0c; $.each()主要用于对数据的处理 其实两者都可以处理DOM节点和数据对象&#xff0c;只是一个使用习惯问题 $(data).each() …