C语言如何输入字符串再输出,使用scanf
函数、使用gets
函数、使用fgets
函数。对于初学者来说,使用scanf
函数是最常见的方法,但这个函数有一些潜在的问题,比如它无法处理带有空格的字符串。相对来说,gets
函数虽然能够读取带有空格的字符串,但它存在缓冲区溢出的问题,不建议使用。最推荐的方法是使用fgets
函数,它不仅能处理空格,还能避免缓冲区溢出的问题。
一、使用scanf
函数
基本用法
在C语言中,scanf
函数是最常用的输入函数之一。它可以用于读取各种类型的数据,包括字符串。使用scanf
函数读取字符串时,通常使用%s
格式说明符。例如:
#include <stdio.h>
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
printf("You entered: %sn", str);
return 0;
}
在这个例子中,scanf
函数将用户输入的字符串读取到数组str
中,并在随后的printf
函数中输出。但是,scanf
函数有一个明显的缺点:它无法读取包含空格的字符串。例如,如果用户输入"Hello World",scanf
函数将只读取"Hello"部分。
避免缓冲区溢出
scanf
函数的另一个潜在问题是缓冲区溢出。如果用户输入的字符串长度超过了数组str
的大小,可能会导致程序崩溃或其他未定义行为。为了避免这种情况,可以限制scanf
函数读取的字符数:
#include <stdio.h>
int main() {
char str[100];
printf("Enter a string: ");
scanf("%99s", str); // 限制读取的字符数为99
printf("You entered: %sn", str);
return 0;
}
这样可以确保scanf
函数最多读取99个字符,并在数组末尾自动添加空字符'