C语言字符数组如何输入:使用scanf函数、使用gets函数、使用fgets函数。 本文将详细介绍如何在C语言中输入字符数组,并分析每种方法的优缺点及应用场景。
一、USING SCANF FUNCTION
scanf函数是C语言中最常用的输入函数之一。它允许我们从标准输入(通常是键盘)读取格式化的数据。要输入一个字符数组,我们可以使用%s
格式说明符。
1. 基本用法
scanf("%s", array);
这种方式可以快速读取一个字符串,但存在一些局限性。
#include <stdio.h>
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
printf("You entered: %sn", str);
return 0;
}
优点:
- 简单快捷,适用于读取单词或不包含空格的字符串。
缺点:
- 不能读取包含空格的字符串。
- 可能导致缓冲区溢出,如果输入的字符串长度超过了数组的大小。
2. 避免缓冲区溢出
我们可以通过指定最大输入长度来避免缓冲区溢出。
scanf("%99s", str); // 假设数组大小为100
这种方式可以限制输入的最大长度,但依然不能处理包含空格的字符串。
二、USING GETS FUNCTION
gets函数是另一种读取字符数组的方法,允许读取包含空格的字符串。
1. 基本用法
#include <stdio.h>
int main() {
char str[100];
printf("Enter a string: ");
gets(str);
printf("You entered: %sn", str);
return 0;
}
优点:
- 能够读取包含空格的整行字符串。
缺点:
- gets函数存在严重的安全问题,因为它不检查输入的长度,容易导致缓冲区溢出。
- 已被C11标准移除,不推荐使用。
三、USING FGETS FUNCTION
fgets函数是一个更安全的替代方案,允许读取包含空格的字符串,并且可以防止缓冲区溢出。
1. 基本用法
#include <stdio.h>
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
printf("You entered: %sn", str);
return 0;
}
优点:
- 能够读取包含空格的整行字符串。
- 防止缓冲区溢出,因为我们可以指定最大输入长度。
缺点:
- 会包含换行符,需要手动处理。
2. 去除换行符
if (str[strlen(str) - 1] == 'n') {
str[strlen(str) - 1] = '