
C语言读取多行输入的多种方法包括使用循环、fgets函数、scanf函数。其中,使用fgets函数是最常见且安全的方法。fgets函数能够读取一整行输入并将其存储到字符串中,同时还可以指定读取的最大字符数,从而避免缓冲区溢出的问题。
一、使用fgets函数读取多行输入
1. 基本用法
fgets函数是读取多行输入的常用方法之一。它能够读取一整行并将其存储到一个字符数组中。基本语法如下:
char *fgets(char *str, int n, FILE *stream);
其中,str是存储输入数据的字符数组,n是读取的最大字符数,stream是输入流,通常为stdin表示标准输入。
2. 实例代码
下面是一个使用fgets函数读取多行输入的实例:
#include <stdio.h>
#define MAX 100
int main() {
char input[MAX];
printf("请输入多行文本(输入'END'结束):n");
while (fgets(input, MAX, stdin)) {
if (strncmp(input, "END", 3) == 0) {
break;
}
printf("你输入的是:%s", input);
}
return 0;
}
在这个例子中,程序会一直读取用户输入,直到用户输入“END”为止。fgets函数确保每次读取的字符数不会超过设定的最大值,从而避免缓冲区溢出的问题。
二、使用scanf函数读取多行输入
1. 基本用法
尽管scanf函数通常用于格式化输入,但它也可以用于读取多行输入。需要注意的是,scanf函数在处理空白字符(如空格和换行符)时可能会出现问题,因此需要特别小心。
2. 实例代码
下面是一个使用scanf函数读取多行输入的实例:
#include <stdio.h>
#define MAX 100
int main() {
char input[MAX];
printf("请输入多行文本(输入'END'结束):n");
while (scanf("%99[^n]%*c", input)) {
if (strncmp(input, "END", 3) == 0) {
break;
}
printf("你输入的是:%sn", input);
}
return 0;
}
在这个例子中,%99[^n]格式说明符用于读取一行输入,直到遇到换行符为止。%*c用于读取并丢弃换行符,从而避免在下一次读取时出现问题。
三、使用getchar函数读取多行输入
1. 基本用法
getchar函数是一个低级别的输入函数,每次只能读取一个字符。尽管如此,它仍然可以用于读取多行输入。
2. 实例代码
下面是一个使用getchar函数读取多行输入的实例:
#include <stdio.h>
#define MAX 100
int main() {
char input[MAX];
int index = 0;
char ch;
printf("请输入多行文本(输入'END'结束):n");
while ((ch = getchar()) != EOF) {
if (ch == 'n') {
input[index] = '