gpt4 book ai didi

c - 将列的每个值分配到动态创建的全局数组中

转载 作者:行者123 更新时间:2023-11-30 17:38:21 26 4
gpt4 key购买 nike

我试图将文本文件中列的每个值存储到动态分配的数组中,该数组需要全局声明以便在程序中进一步使用。

输入文本文件包含以下内容:34932\t13854\t13854\t2012-01-07\r172098\t49418\t53269\t2012-01-07\r

我编写了以下代码:

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

int main()
{
FILE *int_file1;
int BUF = 1024;

char first_col[BUF],sec_col[BUF],third_col[BUF],fourth_col[BUF];

int index=0,i=0;

char *array1=malloc(10*sizeof(char));

int_file1=fopen("test.txt","r");

if(int_file1 == NULL)
{
perror("Error while opening the file.\n");
}
else
{
while(fscanf(int_file1,"%[^\t]\t%[^\t]\t%[^\t]\t[^\n]",first_col,sec_col,third_col,fourth_col) == 4)
{
//printf("%s",first_col);
array1=realloc(array1,strlen(first_col)+1);
array1[index]=first_col;
index++;
}
}

fclose(int_file1);

printf("%s",array1[1]);

return 0;
}

带注释的 printf 行给出了该列的完整值,这证明文件被正确读取。

但是在编译这个程序时,我收到了编译器警告,最后还收到了段错误。

请指出我哪里出错了。

最佳答案

如果有帮助,请尝试这样做而不是这个

array1=realloc(array1,strlen(first_col)+1);

尝试这样做

temp = realloc(array1,strlen(first_col)+1);

array1=temp;

array1[index]=first_col;//You can't do this, You can do this if array1 is double pointer.

关于c - 将列的每个值分配到动态创建的全局数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158513/

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