C fgets()函数:如何从任何地方获取字符串!
C语言是一种非常强大的编程语言,被专业程序员广泛用于开发复杂而非常有用的软件程序。这种语言有一个非常结构化的语法,使得它相对容易学习和使用。它还提供了很好的结构来操作文件和字符串。在本教程中,我们将带您学习一个重要的字符串使用函数——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,文件*文件);
让我们更好地看看这里的参数
- str- 这是指向您在阅读后要保存字符串的字符串或字符数组的指针。
大小-这是你想要阅读的字符总数。记住要包含结束空字符。
文件-这是一个指向File对象的指针,你想从那里读取字符串。
如果要从键盘读取字符串,那么只需使用'stdin'而不是文件指针,如此
FGETS(Pstring,尺寸,stdin);
“Stdin”是C内部用于标准输入即键盘的名称。是的,花哨的名字!让我们在一个简单的程序中尝试一下,看看它是如何工作的。
示例1:fgets()通过键盘读取字符串
#includeint 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()的示例。
#includeint 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应用程序(这里有一个课程可以帮助你开始!)