fgets cC语言是一种非常强大的编程语言,被专业程序员广泛用于开发复杂而非常有用的软件程序。这种语言有一个非常结构化的语法,使得它相对容易学习和使用。它还提供了很好的结构来操作文件和字符串。在本教程中,我们将带您学习一个重要的字符串使用函数——fgets(),它允许您从文件中读取或获取字符串。

这是一个中级教程(即,我们假设您有一些基本的接触C)。虽然我们会走过基础知识,如果你是C编程的新手,我们会先推荐你尝试在C编程上的初学者课程

fgets函数在C语言中做什么?

fgets()是C语言中的文件I / O(输入/输出)函数之一,是“Stoiod.h”库的一部分。名称本身使您提示朝其功能。开始时的“f”表示此文件操作。“get”表示此功能用于“获取”文件中的某些功能。“s”表示此函数从文件中获取字符串。您当然也可以使用它来读取来自键盘的标准输入设备的字符串。在我们进入FGETS()的详细信息之前,让我们在C中快速回复“字符串”(您也可以在这个基本的C课程中学习C中的字符串)。

在C语言中,任何想要操作的文本数据都被称为“字符串”。在指定字符串时,必须将文本放在双引号之间。在内部,C语言将字符串存储为字符数组。例如,存储6个字符的字符串的语法如下所示

# include“stdio . h”;char string_example [7];string_example =“你好”;

请注意,在C中,阵列以索引为零。字符串数组始终在末尾的额外字符'\ n',标记字符串的末尾。您可以说它类似于句子末尾的时段。虽然未打印此字符串终止器或显示,但它仍然在内部占用空间。因此,您始终需要在阵列中为其分配额外的内存空间。

如何使用fgets()

以下是fgets()的语法读取文件中的字符串

char * fgets(char * str,int size,文件*文件);

让我们更好地看看这里的参数

如果要从键盘读取字符串,那么只需使用'stdin'而不是文件指针,如此

FGETS(Pstring,尺寸,stdin);

“Stdin”是C内部用于标准输入即键盘的名称。是的,花哨的名字!让我们在一个简单的程序中尝试一下,看看它是如何工作的。

示例1:fgets()通过键盘读取字符串

#include  int main() {char name[10];printf("你是谁?\ n”);fgets(名称、10 stdin);printf("Good to meet you, %s.\n",name);返回(0);}

运行此程序将在屏幕上显示以下内容:

你是谁?
您在键盘上输入名称。示例:benny samuel
很高兴见到你,贝尼山姆。

这里发生了什么?为什么只印了你一半的名字?准确地说,屏幕上只显示了9个字符。你有没有想过为什么只有9个?这是因为字符串“name[10]”中只有9个字符的空间+空终止符。如果fgets()读取10个字符而不是9个字符,则由于缓冲区溢出,程序将发生故障。

什么时候应该使用fgets()而不是scanf()

字符串用于C编程中以保持所有类型的文本输入。例如,如果要输入您的名称,则必须使用字符串。一世在基本的C课程中,你应该学过scanf()。scanf()和fgets()都用于获取或读取字符串输入。你如何区分何时使用哪个词?以下是你如何做出决定

1.您是否从键盘或文件读取文本字符串?如果要从文件读取,则必须使用FGETS()。要从键盘读取,您可以使用。

2.你的字符串中有空格吗?例如,如果你输入你的名字“John Smith”,在名字和姓氏之间有一个空格,scanf()将简单地退出ie停止阅读一旦它击中空格。所以scanf()最终会变成“John”。对于这种情况,您最好使用fgets()。

例2:如何从文件中读取(然后打印出内容)

现在让我们看一下来自文件的FGETS()的示例。

#include  int main(){file * fp;char str [60];
/ *读取文件* /
Fp = fopen("file.txt", "r");
if(fp == NULL) {perror("Error opening file");返回(1);}
如果(fgets (str, 60, fp))!=NULL){/*写入内容到stdout */ puts(str);}文件关闭(fp);返回(0);}

你能猜出这个程序会做什么吗?这是一个简短的行驶,通过主要陈述:

Fp = fopen("file.txt", "r");

在读取模式下打开文件,并将指针返回到文件并将其存储在变量FP中。

if(fgets(str,60,fp)!= null);

fgets()从文件中读取60个字符并将其存储在字符串阵列中。如果它已到达File.check的末尾,则返回null以确保fgets()实际读取字符串并返回非零值。

放(str);

将str数组的内容打印到屏幕上。

fclose(FP);

书保持!关闭该文件。

我们希望这些示例向您展示如何使用fgets()从文件或键盘中获取或获取您想要的字符串。即使对初学者来说,C语言编程也很有趣。和往常一样,记住熟能生巧。通过大量的编程实践来磨练你的C语言技能。你可以看看这个C课程,它有很多例子

谁知道,你很快就会在c中开发自己的iPhone应用程序(这里有一个课程可以帮助你开始!)

c#顶级课程

面向初学者的c#。net
里克•菲利普斯
4.4 (1264)
完成c# Unity Game Developer 3D
Ben Tristem, Rick Davidson(游戏开发者)电视团队
4.7 (26879)
畅销书
如何在Unity中为MINECRAFT编程Voxel Worlds
Penny de byl,Penny @ holistic3d.com
4.6 (1,420)
c#中级:类,接口和面向对象
狂舞Hamedani
4.5 (23168)
畅销书
RPG核心战斗创造者:学习中级Unity c#编码
Ben Tristem,Rick Davidson,Sam Pattuzzi,Gamev.TV团队
4.7 (8503)
c#高级主题:为技术面试做准备
狂舞Hamedani
4.5 (15134)
完整的c#大师级
Denis Panjuta,Tutorials.eu by Denis Panjuta
4.5 (12,079)
C#和.NET中的设计模式
Dmitri Nesteruk
4.4 (7126)
畅销书
使用C#和.NET学习并行编程
Dmitri Nesteruk
4.5 (2040)
畅销书

更c#的课程

c#的学生也会学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求演示