3

extra.txt ファイルからデータを読み取ろうとしているときに、コードの最後の行でこのエラーが発生しています。レコードは input.txt から適切に読み取られますが、余分なファイルに対してエラーがスローされる理由がわかりません。ありがとう!

typedef struct {
    char* fname;
    char* lname;
    int id;
    int age;
} data;

typedef struct {
    data** array;
    int len;
    int cap;
}vector;

vector* vector_read(FILE* in_file)
{
    int i;
    vector *v = (vector*)malloc(sizeof(vector));
    fscanf(in_file,"%d",&v->len);
    if(in_file=NULL)
     {
       return NULL;
     }
    printf("%d",v->len);
    data** array = (data**)malloc(sizeof(data*)*(v->len));
    v->array = array;
    data *temp;

   for(i=0;i<(v->len);i++)
   {    
     temp = data_read(in_file);        
     v->array[i] = temp;
   }

return v;
}

    vector *v = vector_read(input);
    printf( "initial state of vector v\n");
    vector_print(v);
    vector *v_add = vector_read(extra); 

編集:

extra.txt には、次のようなレコードがあります。

4

Barak Obama 101 50  
Joe Biden 102 55  
Joe Plumber 10293 45  
Wayne Gretzky 99 56

およびinput.txt

1

Aaaa
Aooo
1
20
4

1 に答える 1

2

コードは関数内に入れる必要があります。

たとえば、次のようにします。

int read_input_and_extra(FILE * input, FILE * extra)
{
  vector *v = vector_read(input);
  if (!v)
    return -1;

  printf( "initial state of vector v\n");
  vector_print(v);

  vector *v_add = vector_read(extra); 
  if (!v_add)
    return -2;

  return 0;
}
于 2012-11-08T07:58:37.887 に答える