c,使用struct的问题

时间:2009-05-01 18:57:24

标签: c struct

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

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

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

fgets(buffer, 50, datafile);

然后我想将它解析为结构,但这就是我的问题所在:

int i = 0;
while (buffer[i] != ' ') {
  clovek.fname[i] = buffer[i];
  i++;
}

这给了我一个错误:期望的标识符或'('''''''''之前的标记

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

printf("fname, %s\n", clovek.fname);

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

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

2 个答案:

答案 0 :(得分:10)

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

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */

答案 1 :(得分:5)

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

从声明中删除“typedef”。这样,clovek就变成了Person类型的变量:

甚至更好,将变量声明中的结构声明分开:

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

struct Person clovek;