You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向嵌套结构体赋值时出现编译错误:expected expression before 'game'

解决结构体赋值时的"expected expression before 'game'"编译错误

你遇到的这个编译错误,核心原因很简单:game是你通过typedef定义的结构体类型名,不是实际的变量。C语言里,你必须先声明一个该类型的变量,才能用点.运算符去访问它的成员。

第一步:声明结构体变量

在使用结构体成员之前,先创建一个game类型的变量,比如:

game myGame; // 这里myGame是变量名,你可以换成任何合法的标识符

第二步:修正成员访问代码

把原来的game.title这类写法,换成变量名加成员,比如:

// 注意:不推荐用gets,后面会说原因
gets(myGame.title);
gets(myGame.platform);
gets(myGame.developer);
scanf("%d", &myGame.year);

重要提醒:替换不安全的gets()

gets()函数已经被C标准废弃了,因为它不会检查输入的长度,很容易导致缓冲区溢出,引发程序崩溃或者安全问题。建议用fgets()替代,不过要注意fgets()会把输入的换行符\n也读进去,需要手动去掉:

比如读取title的代码可以改成:

fgets(myGame.title, MAX, stdin);
// 去掉换行符
myGame.title[strcspn(myGame.title, "\n")] = '\0';

处理scanf()后的换行符残留

当你用scanf("%d", &myGame.year)读取年份后,输入缓冲区里会留下一个换行符,如果后面继续用fgets()读取字符串,会直接读到这个空行。解决方法是在scanf()之后,用getchar()把换行符吃掉:

scanf("%d", &myGame.year);
getchar(); // 清除缓冲区里的换行符

完整的修正示例代码

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

#define MAX 100

typedef struct gameInfo {
    char title[MAX];
    char platform[MAX];
    char developer[MAX];
    unsigned int year;
    struct borrowerInfo {
        bool borrowed;
        char nameOfBorrower[MAX];
        char date[MAX];
    } borrower;
} game;

int main() {
    // 声明结构体变量
    game myGame;

    printf("输入游戏标题:");
    fgets(myGame.title, MAX, stdin);
    myGame.title[strcspn(myGame.title, "\n")] = '\0';

    printf("输入平台:");
    fgets(myGame.platform, MAX, stdin);
    myGame.platform[strcspn(myGame.platform, "\n")] = '\0';

    printf("输入开发商:");
    fgets(myGame.developer, MAX, stdin);
    myGame.developer[strcspn(myGame.developer, "\n")] = '\0';

    printf("发行年份:");
    scanf("%d", &myGame.year);
    getchar(); // 清除换行符,避免影响后续输入(如果有的话)

    // 测试输出
    printf("\n游戏信息:\n");
    printf("标题:%s\n", myGame.title);
    printf("平台:%s\n", myGame.platform);
    printf("开发商:%s\n", myGame.developer);
    printf("年份:%u\n", myGame.year);

    return 0;
}

这样修改后,编译错误就会消失,同时代码也更安全可靠。

内容的提问来源于stack exchange,提问作者erykkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:40:11