吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → C语言中的fgets()和gets()

C语言中的fgets()和gets()

来源:网络 | 更新时间:2022-01-24 21:12:40
要读取带有空格的字符串值,我们可以在 C 编程语言中使用 gets() 或 fgets()。在这里,我们将看到gets() 和fgets() 之间的区别。

fgets()

它从指定的流中读取一行并将其存储到 str 指向的字符串中。它在读取 (n-1) 个字符、读取换行符或到达文件结尾时停止,以先到者为准。 语法 :
char *fgets(char *str, int n, FILE *stream) 
str :指向复制读取字符串的字符数组的指针。
n :要复制到 str 的最大字符数
(包括终止的空字符)。
*stream :指向标识输入流的 FILE 对象的指针。
stdin 可用作从标准输入读取的参数。
returns 函数返回 str
  • 它遵循一些参数,例如最大长度、缓冲区、输入设备引用。
  • 使用它是安全的,因为它会检查数组绑定。
  • 它继续阅读,直到遇到换行符或字符数组的最大限制。
示例:假设最大字符数为 15,输入长度大于 15,但 fgets() 仍将仅读取 15 个字符并打印它。
// C program to illustrate
// fgets()
#include <stdio.h>
#define MAX 15
int main()
{
char buf[MAX];
fgets(buf, MAX, stdin);
printf("string is: %sn", buf);

return 0;
}
由于 fgets() 从用户读取输入,我们需要在运行时提供输入。
Input:
Hello and welcome to 52cxydh

Output:
Hello and welc
gets() 从标准输入 (stdin) 读取字符并将它们作为 C 字符串存储到 str 中,直到到达换行符或文件结尾。 语法:
char * 获取 ( char * str ); 
str :指向内存块的指针(字符数组)
其中读取的字符串被复制为 C 字符串。
returns :函数返回 str
  • 使用不安全,因为它不检查数组绑定。
  • 它用于从用户读取字符串,直到没有遇到换行符。
示例:假设我们有一个 15 个字符的字符数组并且输入大于 15 个字符,gets() 将读取所有这些字符并将它们存储到变量中。因为,gets() 不检查输入字符的最大限制,所以在任何时候编译器都可能返回缓冲区溢出错误。
// C program to illustrate
// gets()
#include <stdio.h>
#define MAX 15

int main()
{
char buf[MAX];

printf("Enter a string: ");
gets(buf);
printf("string is: %sn", buf);

return 0;
}
由于gets() 从用户读取输入,我们需要在运行时提供输入。
Input:
Hello and welcome to 52cxydh

Output:
Hello and welcome to 52cxydh
 

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com