Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C文件中的结构列表_C_Pointers_Struct - Fatal编程技术网

C文件中的结构列表

C文件中的结构列表,c,pointers,struct,C,Pointers,Struct,我有一个结构简单的文本文件: Foo Bar C Joe Bob A ..... 我想读取这个文件并填充一个结构的“矩阵”,比如说一个指向该结构的指针列表。 我试过: typedef struct Test { char *A; char *B; char Res; }Test; int main() { FILE *fptr; int i; char A[10], B[10], res; Test **data =

我有一个结构简单的文本文件:

Foo Bar C
Joe Bob A
.....
我想读取这个文件并填充一个结构的“矩阵”,比如说一个指向该结构的指针列表。 我试过:

typedef struct Test
{
    char *A;
    char *B;
    char Res;
}Test;

int main()
{
    
    FILE *fptr;
    int i;
    char A[10], B[10], res;
    
    Test **data = malloc(5*sizeof(Test);
     
    // allocate mem for each Struct
    for(i=0; i<5; i++){
        data[i] = malloc(sizeof(Test));
    }


    fptr = fopen("dati.txt", "r");
    
    // let's say we have 5 records
    for(i=0;i<5;i++) {

        fscanf(fptr,"%s %s %c\n", &A, &B, &res);
        
        data[i]->A = A;
        data[i]->B = B;
        data[i]->Res = res;
        
        printf("\A: %s, B: - %s --> %d", data[i]->A, data[i]->B, data[i]->Res);
    }

    return 0;
}
typedef结构测试
{
char*A;
char*B;
char Res;
}试验;
int main()
{
文件*fptr;
int i;
字符A[10],B[10],res;
测试**数据=malloc(5*sizeof(测试);
//为每个结构分配mem

for(i=0;i您的
数据[i]->A=A;
是指针。当您将
A
分配给它时,您将分配指针,每次从文件中读取记录时,其数据都会被覆盖

必须为读取的数据分配内存,然后将数据复制到新内存中,例如:

data[i]->A = malloc(strlen(A)+1);
strcpy(data[i]->A,A);

data[i]->A=A;
将导致每次迭代覆盖以前的数据,您将只看到最后读取的值,与其他参数相同。我看不出这是一个有效的结构
Foo Bar C