C编程中的fgets()和gets()

时间:2020-02-23 14:32:03  来源:igfitidea点击:

介绍

我们都熟悉scanf()函数。
它是适用于接受基本用户输入的主要功能。
即使scanf()在接受整数,字符,浮点等输入时效果很好。
在接受包含空格的字符串输入时,它肯定会落后。
让我们看一个例子

#include<stdio.h>
int main()
{
  char string[10];
  printf("Enter the string: ");
  scanf("%s", string);
  printf("\n %s",string);
  return 0;
}

从上面的示例可以看出。
一旦遇到空白或者换行符," scanf()"就会停止扫描。
实际上,这使得使用scanf()获取字符串输入有点麻烦。
通过使用其他一些输入函数(如gets()和fgets())可以轻松避免这种情况。

在本文中,我们将学习如何应用这两个功能并进行比较。

C语言中的gets()函数

gets()是C语言中的预定义函数,用于读取字符串或者文本行。
并将输入存储在定义明确的字符串变量中。
一旦遇到换行符,该函数将终止其读取会话。

语法:

gets(变量名);

以下给出的代码说明了gets()函数的用法,

#include<stdio.h>
int main()
{
  char string[10];
  printf("Enter the String: ");
  gets(string);
  printf("\n%s",string);
  return 0;
}

使用scanf()时将输出与输出进行比较。
现在," Hello World"被视为一个字符串。

C中的fgets()函数

标准的C库还为我们提供了另一个函数,即fgets()函数。
该函数从指定的文件或者控制台读取文本行或者字符串。
然后将其存储到相应的字符串变量中。

与gets()函数类似,fgets在遇到换行符时也会终止读取。
但此外,与gets()不同,该函数还会在达到EOF或者即使字符串长度超过指定的限制n-1时也停止。

语法,

fgets(char * str,int n,FILE * stream)

  • str –这是将其中存储字符串的变量
  • n –这是应读取的字符串的最大长度
  • 流–它是文件句柄,将从此处读取字符串。

幸运的是,我们都可以使用fgets()函数从文件或者标准输入流中读取文本行。
让我们看看

1.使用fgets()从给定文件中读取

例如,

#include<stdio.h>
int main()
{
  char string[20];
  FILE *fp;
  fp=fopen("file.txt","r");
  fgets(string,20,fp);
  printf("The string is: %s",string);
  fclose(fp);
  return 0;
}
  

考虑file.txt包含" theitroad fgets()示例!"行。

2.使用fgets()从stdin中读取

#include<stdio.h>
int main()
{
  char string[20];
  printf("Enter the string: ");
  fgets(string,20,stdin);         #input from stdin stream
  printf("\nThe string is: %s",string);
  return 0;
}