【发布时间】:2019-04-01 16:41:16
【问题描述】:
我正在尝试编写一个名为 read_line() 的函数来逐行从文本文件中获取数据。调用该函数后,该行将被写入 str 指针,该函数将返回该行的长度。不幸的是,我最终总是得到 null。
/* readline.c*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "readline.h"
int read_line(char *str)
{
/* Open the file for reading */
size_t line_buf_size = 0;
ssize_t line_size;
FILE *fp = fopen("0.txt", "r");
if (!fp)
{
fprintf(stderr, "Error opening file '%s'\n", "0.txt");
return EXIT_FAILURE;
}
/* Get the first line of the file. */
line_size = getline(&str, &line_buf_size, fp);
printf(str);
return line_size - 2;
}
/* main.c*/
#include "readline.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
char *str = NULL;
int num;
num = read_line(str);
printf("%s", str);
printf("%d", num);
return 0;
}
预期:获取文本文件第一行的内容。 实际:(null)12
【问题讨论】:
-
创建时名为
str的指针为NULL,并且您没有将它传递给任何可以更改它的函数,因此当您尝试将它与printf 一起使用时它将为NULL .也许您需要将指向str的指针传递给getline,而不是复制指针。