📅  最后修改于: 2023-12-03 14:53:03.911000             🧑  作者: Mango
在 C/C++ 编程语言中,我们经常需要将字符串读取到 char 数组中以便于处理。下面我们将介绍几种常见的方法。
fgets() 函数是 C 语言中读取字符串的常用函数,它的声明如下:
char *fgets(char *str, int n, FILE *stream);
其中,str 为指向 char 数组的指针,n 为接收的字符数(包括字符串结束符 '\0'),stream 指定输入流(例如 stdin 表示从控制台输入)。
下面是一个示例代码,演示如何使用 fgets() 读取字符串:
#include <stdio.h>
int main() {
char str[100];
printf("请输入字符串:");
fgets(str, 100, stdin);
printf("您输入的是: %s", str);
return 0;
}
scanf() 函数也可以用来读取字符串,但是相对于 fgets() 函数,它更容易出现问题,因为 scanf() 函数会在空格和换行符处停止读取(但是下一个 scanf() 函数并不会自动清除掉之前的换行符)。所以,建议只在必要情况下使用 scanf()。
下面是一个使用 scanf() 读取字符串的示例代码:
#include <stdio.h>
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
printf("您输入的是: %s", str);
return 0;
}
gets() 函数是 C 语言中的另一种读取字符串的函数,如果在输入字符串时没有遇到问题,它的效果和 fgets() 函数是一样的。然而,gets() 函数经常会发生缓冲区溢出的问题,因此 C++11 标准已经不再支持使用该函数。
下面是一个使用 gets() 读取字符串的示例代码:
#include <stdio.h>
int main() {
char str[100];
printf("请输入字符串:");
gets(str);
printf("您输入的是: %s", str);
return 0;
}
总结: