读入未知行数的输入 C语言
时间: 2024-08-12 10:07:33 浏览: 73
在C语言中,处理未知行数的输入通常涉及到动态内存分配和文件操作。当你不知道用户会提供多少行数据时,可以使用fgets
函数逐行读取,并结合malloc
或realloc
来动态管理内存。以下是一个简单的示例,展示了如何读取用户输入直到遇到EOF(文件结束符):
```c #include <stdio.h> #include <stdlib.h> #include <string.h>
#define MAX_LINES 100 // 假设最多处理100行
int main() { char** lines = malloc(sizeof(char*) * MAX_LINES); // 分配初始行数的内存 int num_lines = 0;
FILE* input = fopen("input.txt", "r"); // 打开输入文件
if (input == NULL) {
printf("无法打开文件.\n");
return 1;
}
while (fgets(lines[num_lines], sizeof(lines[num_lines]), input) != NULL) {
num_lines++; // 行数增加
lines[num_lines - 1] = realloc(lines[num_lines - 1], strlen(lines[num_lines - 1]) + 1); // 动态扩容行数组
lines[num_lines - 1][strlen(lines[num_lines - 1])] = '\0'; // 结尾添加'\0'
}
fclose(input);
// 处理读取到的每一行
for (int i = 0; i < num_lines; i++) {
printf("Line %d: %s\n", i + 1, lines[i]);
}
// 清理内存
for (int i = 0; i < num_lines; i++) {
free(lines[i]);
}
free(lines);
return 0;
}
相关推荐
















