【问题标题】:error: undeclared here (not in a function)错误:此处未声明(不在函数中)
【发布时间】:2017-08-12 05:33:21
【问题描述】:

我在代码的最后一行收到此错误,因为我正试图从 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

【问题讨论】:

  • 您需要提供更多代码。你对inputextra 的定义是什么样的?
  • @vp881:不是文件的内容,但你会在代码中的某处完成FILE* input;。你也做过FILE* extra吗?
  • @JoakimGebart 添加了输入和额外的格式
  • @Naveen 是的,我做了 FILE* extra
  • 另外,从vector *v = vector_read(input); 开始的行应该在某个函数内部(例如main)。您可以发布您尝试编译的代码,直接从您的编辑器复制粘贴吗?

标签: c file-io struct


【解决方案1】:

您的代码需要放在函数内部。

例如这样:

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;
}

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2016-05-09
    • 2018-10-03
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多