我正在尝试编写一个从外部文件读取文本的程序(字符串字符串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)
您的语句将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)