c语言怎么输入多行字符串
时间: 2024-12-02 14:21:10 浏览: 28
在C语言中,标准的`scanf()`或`fgets()`函数不能直接用来读取多行字符串,因为它们会在遇到换行符('\n')时停止。如果你需要获取多行文本,你可以使用以下几种方法:
**方法一:循环读取**
使用`fgets()`函数,配合`while`循环,直到读取到空行为止。
```c
#include <stdio.h>
#define MAX_LINE_LENGTH 80
int main() {
char input[MAX_LINE_LENGTH];
char newline = '\n'; // 换行字符
printf("请输入多行文本: ");
while (fgets(input, sizeof(input), stdin) != NULL) { // 不要忘记检查是否达到文件结尾
if (input[strlen(input)-1] == newline) { // 如果最后一字符是换行
input[strlen(input)-1] = '\0'; // 删除换行符
// 这里可以对输入进行处理,如存储到数组或其他数据结构中
printf("已读入一行: %s\n", input);
} else {
printf("还在等待换行...\n");
}
}
return 0;
}
```
**方法二:`getline()`库**
如果你的项目支持,可以使用第三方库`getline(3)`,它是`stdio.h`的一个补充,专门用于安全地读取一行文本,包括换行符。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 注意:你需要链接必要的库(如 -lreadline 或 -lncurses)
int main() {
char *input;
size_t len;
while ((input = getline(&len, &stdin)) != NULL) {
input[strcspn(input, "\n")] = '\0'; // 删除换行符
// 对输入进行处理
printf("已读入一行: %s\n", input);
free(input); // 释放内存
}
return 0;
}
```
记得在使用`getline()`之前,先检查是否已经包含了相应的库,并确保正确链接。
阅读全文