
C语言可以通过多种方法来一次输入多行字符串,如使用 fgets 函数、scanf 函数结合循环、宏定义等。本文将详细介绍这些方法,并探讨它们的优缺点及应用场景。
使用fgets函数读取多行字符串,是一种常见且安全的方法。
fgets函数能够读取指定长度的字符串,并且会自动在读取到换行符或者达到指定长度时停止。其语法为:char *fgets(char *str, int n, FILE *stream);。使用fgets函数时,需要注意缓冲区的大小以及换行符的处理。
一、使用fgets函数读取多行字符串
fgets函数是读取多行字符串的首选方法之一,因为它能有效防止缓冲区溢出。下面我们将详细介绍如何使用fgets函数读取多行字符串。
1、基本用法
fgets函数的基本用法如下:
#include <stdio.h>
int main() {
char buffer[100];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
printf("%s", buffer);
}
return 0;
}
上述代码中,fgets函数会读取标准输入中的每一行,并将其存储在buffer中,然后输出到标准输出。这样就实现了多行字符串的输入。
2、处理换行符
fgets函数在读取字符串时,会将换行符也存储在缓冲区中。如果不希望换行符出现在字符串中,可以在读取后手动去除:
#include <stdio.h>
#include <string.h>
int main() {
char buffer[100];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
buffer[strcspn(buffer, "n")] = '