c,使用struct的问题

2 c struct

我正在尝试编写一个从外部文件读取文本的程序(字符串字符串int,每行).Struct在main函数之外定义:

typedef struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
} clovek;
Run Code Online (Sandbox Code Playgroud)

我不需要"clovek"作为数组,因为每个行数据都可以被覆盖.线为红色缓冲区:

fgets(buffer, 50, datafile);
Run Code Online (Sandbox Code Playgroud)

然后我想解析它到结构,但这是我的问题出现的地方:

int i = 0;
while (buffer[i] != ' ') {
  clovek.fname[i] = buffer[i];
  i++;
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:期望的标识符或'('''''''令牌

我也想使用此代码进行调试,但它也会发出另一个错误:

printf("fname, %s\n", clovek.fname);
Run Code Online (Sandbox Code Playgroud)

错误:'clovek'之前的预期表达式

我的猜测是我完全误解了结构的使用.

dir*_*tly 10

clovek是别名struct Person.删除typedef关键字,或struct Person在代码中的某处创建类型的对象.使用现有代码,您可以:

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */
Run Code Online (Sandbox Code Playgroud)


Căt*_*tiș 5

您的语句将clovek定义为结构Person的别名.

从声明中删除"typedef".这样,clovek成为Person类型的变量:

或者甚至更好,从变量声明中单独的结构声明:

struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
};

struct Person clovek;
Run Code Online (Sandbox Code Playgroud)

  • 你可能的意思是"struct Person clovek;" 在第二行. (2认同)