我正在尝试编写一个从外部文件读取文本的程序(字符串字符串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'之前的预期表达式
我的猜测是我完全误解了结构的使用。
答案 0 :(得分:10)
clovek
是struct 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;