Huang_Jason_ 2023-06-14 15:29 采纳率: 50%
浏览 277
已结题

expected expression before ‘struct’ 为什么一直这样子报错,怎么样修改都没办法


#include <stdio.h>
#include <stdlib.h>
#define year 4 //定义大学年份为4年

typedef      //学生 结构体
struct Student{
    char name[10]; //存储学生姓名
    int id;
    int yw[4];
    int sx[4];
    int yy[4];
} student[10],temp; //声明 学生数组 和temp


int getStuSum(){ //获取学生个数-1
    int i=0;
    for(i;i<sizeof(student)/sizeof(student[0]); i++){
        if( strcmp(student[i].id ,0) ){
            return i;
        }
    }

}

  • 写回答

5条回答 默认 最新

  • 火花怪怪 2023-06-14 16:03
    关注

    在代码中,结构体的定义缺少一个名称,只有一个typedef关键字,需要在结构体定义前加上结构体名称。另外,在getStuSum函数中,对结构体中的id成员使用了strcmp函数,但是该成员是int类型,不能直接作为strcmp函数的参数,应该改为比较是否等于0。修改后的代码如下:

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define year 4 //定义大学年份为4年
    
    typedef struct Student{ //添加结构体名称
        char name[10]; //存储学生姓名
        int id;
        int yw[4];
        int sx[4];
        int yy[4];
    } Student; //修改结构体名称
    
    Student student[10], temp; //声明 学生数组 和temp
    
    int getStuSum() { //获取学生个数-1
        int i = 0;
        for(i; i < sizeof(student) / sizeof(student[0]); i++) {
            if(student[i].id == 0) { //比较是否等于0
                return i;
            }
        }
    }
    
    int main() {
        return 0;
    }
    

    还需要注意,该程序中的id成员应该是int类型,而不是char类型,因为学生的学号通常是数字。另外,由于数组下标从0开始,getStuSum函数返回的应该是学生个数,而不是学生个数-1。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月22日
  • 已采纳回答 6月14日
  • 创建了问题 6月14日

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件