gpt4 book ai didi

c - 没有从二维char数组中获取内容

转载 作者:行者123 更新时间:2023-11-30 14:39:21 24 4
gpt4 key购买 nike

我试图读取一个文本文件并将二维字符数组返回到主函数。文本文件ips.txt如下:

hello1
hello2
hello3

我的代码如下:

define BUF 20
define TOT 3

char ** getIps(){
char line[TOT][BUF];
FILE *plist = NULL;
int i = 0;
int total = 0;

plist = fopen("ips.txt", "r");
while(fgets(line[i], BUF, plist)) {
line[i][strlen(line[i]) - 1] = '\0';
i++;
}
return line;

}

int main(void) {
int i=0;
char (*line)[TOT];
line=getIps();
int total=3;
for(i = 0; i < total; ++i)
printf("%s\n", line[i]);

return 0;
}

main函数什么也没打印出来,不知道我哪里做错了?

最佳答案

getIps 正在将 line 分配为局部变量。您无法返回局部变量就是这样;一旦函数执行,内存就会被释放退出。

此外,您将 line 分配为 char 的二维数组,但是调用者试图将其映射到一个一维数组上指向 char 的指针。再说一遍,这行不通。

getIps 可以改为分配类似的指针数组,并使用malloc 为每个字符串分配空间。然而,由于来电者已经开始这样做了,将地址传递给 getIps 更简单并让它使用它。

还有其他问题。该代码假设只有三行输入;如果有更多,您将超出缓冲区。你是对应该使用 #define 的内容进行硬编码,例如 int Total=3。你不检查fopen的返回值。

关于c - 没有从二维char数组中获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56121281/

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