我正在尝试编写一个从外部文件读取文本的程序(字符串字符串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'之前的预期表达式

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

有帮助吗?

解决方案

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

clovek someone;

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

其他提示

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

删除“typedef”来自宣言。这样,clovek就变成了Person类型的变量:

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

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

struct Person clovek;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top