gpt4 book ai didi

C - 使用 getline() 从文件中打印行

转载 作者:行者123 更新时间:2023-11-30 15:00:01 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的 C 程序来加载文本文件,将第一行打印到屏幕上,等待用户按 Enter 键,然后打印下一行,依此类推。

作为唯一的参数,它接受作为流“数据库”加载的文本文件。根据this,我使用 getline() 函数来实现此目的。例子。它编译正常,成功加载文本文件,但程序永远不会进入 while 循环 然后退出。

#include <stdio.h>
#include <stdlib.h>

FILE *database = NULL; // input file

int main(int argc, char *argv[])
{
/* assuming the user obeyed syntax and gave input-file as first argument*/
char *input = argv[1];

/* Initializing input/database file */
database = fopen(input, "r");
if(database == NULL)
{
fprintf(stderr, "Something went wrong with reading the database/input file. Does it exist?\n");
exit(EXIT_FAILURE);
}

printf("INFO: database file %s loaded.\n", input);

/* Crucial part printing line after line */
char *line = NULL;
size_t len = 0;
ssize_t read;

while((read = getline(&line, &len, database)) != -1)
{
printf("INFO: Retrieved line of length %zu :\n", read);
printf("%s \n", line);
char confirm; // wait for user keystroke to proceed
scanf("%c", &confirm);
// no need to do anything with "confirm"
}

/* tidy up */
free(line);
fclose(database);
exit(EXIT_SUCCESS);
}

我用fgets()尝试过——我也可以发布该代码——但同样的事情:它永远不会进入while循环。

这可能是非常明显的事情;我是编程新手。

我在 Kali Linux 上使用 gcc 编译器。

最佳答案

使用 stdin 作为文件参数,通过 fgetline 更改 scanf。

关于C - 使用 getline() 从文件中打印行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42393117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com