学习C语言中的Getline函数

4,398 阅读3分钟

Getline是最新和最流行的函数,用于读取一串文本()。getline()函数是C库的一部分。这个函数接受来自输入流的字符串作为输入,所以getline()是一个更好的选择。getline()使用的是指针的概念。对于读取文本,getline方法是最理想的方式。getline方法从一个流中读取一个完整的行,例如换行符。为了完成输入,使用getline函数生成一个停止字符。命令将被完成,这个字符将被从输入中删除。我们都有cin对象来接受用户输入;但是,cin对象不允许我们以多行的形式接受用户输入;因此,我们可以使用getline()函数以多行或一串的形式从输入流中接受输入,直到发现一个分隔符。

getline函数使用realloc函数,根据需要自动增加内存块,确保永远不会出现空间不足的情况。这也是getline安全的原因之一。第二个参数里面返回的值也将告知我们新的块大小。如果出现错误,例如到达文件的末尾而没有收到任何字节,它将返回-1。当Getline函数遇到换行符或文件结尾时,就停止从流中读取输入。

getline()函数的语法在下一行显示

size_t getline (char **string, size_t *n, FILE *stream);

语法的解释

因为大小 "t "是一个无符号积分类型,它不会返回一个负值。它主要用于对数组中的对象进行索引和计算。这个参数表示第一个参数所指的内存块的大小,单位是字节。"**string "是一个字符阵列双指针。这指定了字符数组的初始字符的位置。它将有getline函数读取的行在里面。"*n "是一个指针,它只是一个保持数组大小的变量。"FILE *stream",即stdin是将被读取的文件的流。它是实体指针,代表从其中读取字符的流。输入文件描述符是stdin。

C语言中getline()函数的例子

现在我们有一个插图来更好地理解C语言中的getline()函数。我们在Ubuntu 20.04操作系统上实现这个例子。然而,任何其他操作系统都可以用于此目的。Ubuntu 20.04操作系统的终端可以通过 "Ctrl+Alt+T "或在应用程序中寻找它来访问。一旦你得到它,执行下面的nano指令来创建一个文件。我们将其命名为
"nano getl.c",然而,名字的选择完全取决于你。

$ nano getl.c

这条指令不会有输出,但我们将获得Ubuntu 20.04操作系统的GNU nano编辑器的访问权。你必须在文件中写下附件中的代码。一旦你理解了功能,你可以修改它。保存这个文件并退出。

getline()方法被定义在stdio.h头文件中。getline()函数接受三个参数并返回我们输入的字符数。size_t类型的characters'变量被用来保存返回值。malloc()函数在stdlib.h头文件中定义。字符串输入被保存在代码中早先声明的指针缓冲区所指向的内存位置。使用size_t变量类型,它是一个特定类型的整数。getline()函数需要这个。在上面的代码中,缓冲区的大小被设置为32个字符。buffer的值,bufsize,然后是stdin,被getline()方法用于标准输入。

printf()函数将一个文本字符串输出到终端的stdout屏幕上。这是最常见的输出字符串的方法之一。一旦你关闭文件,现在就是你必须执行代码的时候了。在Ubuntu 20.04操作系统中,GCC编译器被用来进行代码编译和执行。我们已经安装了它。如果你在Ubuntu 20.04操作系统中没有GCC编译器,你可以通过 "Sudo apt install GCC instruction "来安装它。现在运行列出的命令。

$ gcc getl.c

因此,这个指令不会有输出。现在执行列出的命令以获得上述代码的输出。

$ ./a.out

你可以验证一下,我们没有得到错误。系统提示我们要输入一些东西,所以我们输入了 "Kalsoom"。从输入的字符串中读出的字符数将显示在输出中。

总结

本指南展示了C语言编程中getline()函数的概念和用法。我们解释了这个函数的语法,以便你能在你的程序中相应地使用它。对这个实际的例子进行了很好的解释,并向用户展示了它的执行情况,使用户对C语言编程中的getline()函数有了更广泛的认识。现在,你可以在你的代码中需要的地方使用这个例子。