c - 从C中的输入读取多行
问题描述
我正在尝试从控制台输入中读取多行,但我真的不知道该怎么做。我编写了一个只读取第一行的代码并尝试循环它,但我无法弄清楚它的工作方式。欢迎任何帮助。提前致谢。这是代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* readLine() {
char* line = malloc(100), * linep = line;
size_t lenmax = 100, len = lenmax;
int c;
if (line == NULL)
return NULL;
for (;;) {
c = fgetc(stdin);
if (c == EOF || c == '\n')
break;
if (--len == 0) {
len = lenmax;
char* linen = realloc(linep, lenmax *= 2);
size_t diff = line - linep;
if (linen == NULL) {
free(linep);
return NULL;
}
line = linen + diff;
linep = linen;
}
*line++ = c;
}
*line = '\0';
return linep;
}
int main() {
for (int i = 0; i < 2; i++) {
printf("%s", readLine());
}
return 0;
}
如您所见,我只设法循环调用了两次函数,这意味着我将只读取一行两次。
编辑:我找到了一种逐行读取代码的方法,方法是在输入后立即对该行执行所有工作(在输入下一行之前保存我需要的所有内容),并尝试在其 != ' 时停止 while 循环\n',但循环不会停止,而是继续打印 '\n' 字符(我不断得到空行)。有关如何解决此问题的任何帮助?
// Same stuff here
int main() {
char* temp = readLine();
while (*temp != '\n') {
char* temp = readLine();
printf("%s\n", temp);
}
return 0;
}
解决方案
推荐阅读
- jquery - 在表格视图 ASP.NET MVC 中显示从 AJAX 请求到控制器的动态数据
- python - 将置信区间计算为分位数
- python - DataFrame detect when one column becomes bigger than another
- react-native - 是否可以在 Modal (react-native) 中使用 searchableDropdown?
- django - URL 不会重定向到 detailview pk Django
- blazor - blazor如何使用jquery库
- terraform - Terraform EB 环境未找到具有显式依赖关系的子网
- python - conv net save weight 和新的测试集
- java - Intellij Maven 无法解决我的依赖关系
- database - 启用将进入特定表空间的审计