#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100000

typedef struct {
    int day;
    int month;
    int year;
} DATE;

typedef struct {
    char name[100];
    int age;
    float hrlyWage;
    float hrsWorked;
    float regPay;
    float otPay;
    float totalPay;
    DATE payDate;
} PAYRECORD;

int newRecord(struct PAYRECORD record[], int index){
    //set name to \0 so it can work as string
    record[index].name = {'\0'};
    index++;
    return index;
}

int main(){
    char menuChoice = 'X';
    struct PAYRECORD record[SIZE];
    int index = 0;

    while (menuChoice != 'Q'){
        system("pause");
        system("cls");
        menuChoice = runMenu();
        switch (menuChoice){
            case 'A':
                index = newRecord(record, index);
        }
    }
}

main设置一个结构数组,传递给newRecord,目的是使它能够在这里输入数据,然后返回新索引来跟踪我的结构数组。然而,当我的程序似乎没有将newRecord识别为一个函数时,就出现了一些问题,最终导致整个程序无法运行。
我得到了newRecord中所有函数的语法错误,尽管我认为这是因为,正如我所提到的,程序似乎无法将newRecord识别为用户定义的函数。

最佳答案

使用struct PAYRECORD是错误的,因为没有这种类型。您只有一个名为typedefPAYRECORD
如果您希望能够同时使用struct PAYRECORDPAYRECORD,请将struct的定义更改为:

typedef struct PAYRECORD {
   char name[100];
   int age;
   float hrlyWage;
   float hrsWorked;
   float regPay;
   float otPay;
   float totalPay;
   DATE payDate;
} PAYRECORD;

如果这不是您的目标,那么只需将struct PAYRECORD的用法更改为PAYRECORD
另外,行:
record[index].name = {'\0'};

innewRecord不正确。不能分配给这样的数组。更改为:
record[index].name[0] = '\0';

09-15 15:06