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; }