请问以下代码该怎么该才能正常运行?

#include<stdio.h>
#include <string.h>
typedef struct worker{
    char name[100];
    char sex[100];
    int date;
    char type[100];
}worker;
const int n = 5;
int main(){
    void input(worker *st, int a);
    void judge(worker *st, int a);
    void output(worker *st, int a);
    worker st[n];
    worker *wk = st;
    char filename1[] ="3.txt";
    char filename2[]="4.txt"
    input(wk, n, filename1, "r");
    judge(wk, n);
    output(wk, n, filename2, "w");
    return 0;
}
void input(worker *st, int a,char filename[],char mode[]){
    FILE *fp;
    fp=fopen(filename,mode);
    int j;
    for (j = 0; j < a; j++){
        fscanf(fp,"%s %s %d", st[j].name, st[j].sex, &st[j].date);
        st++;
    }
    fclose(filename);
}
void judge(worker *st, int a){
    int j;
    for (j = 0; j < a; j++){
        if (st[j].date<5){
            strcpy(st[j].type, "正常");
        }
        else{
            strcpy(st[j].type, "不正常");
        }
    }
}
void output(worker *st, int a, char filename[],char mode[]){
    int j;
    freopen(filename, mode, stdout);
    for (j = 0; j < a; j++){
        printf("%s,%s,%d,%s\n", st[j].name, st[j].sex, st[j].date, st[j].type);
        }
    fclose(filename);
}

 printf("%s,%s,%d,%s\n", st[j].name, st[j].sex, st[j].date, st[j].type);

是 fprintf("%s,%s,%d,%s\n", st[j].name, st[j].sex, st[j].date, st[j].type);吧

fscanf(fp,"%s %s %d", st[j].name, st[j].sex, &st[j].date);

这两者要对应吧,scanf也应该是%s,%s,%d

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632