gpt4 book ai didi

c - 尝试将值复制到指针 str 时获取 null

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:58 25 4
gpt4 key购买 nike

我正在尝试编写一个名为 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;
}

预期:获取文本文件第一行的内容。实际:(空)12

最佳答案

main ,你有一个名为 str 的对象类型 char* . read_line将指针的值作为参数,但不修改指针本身。这意味着无论发生什么,str 的值仍将是 NULL当它到达 printfmain

一种方法是将指针传递给您的指针对象,而不是它的值。

int read_line(char **str)
{
...
/* Get the first line of the file. */
line_size = getline(str, &line_buf_size, fp);
printf("%s", *str);
...
}

这边,str将由 getline 修改

关于c - 尝试将值复制到指针 str 时获取 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55459863/

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