
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个字符,并在数组末尾自动添加空字符'