小码过海 2023-04-13 21:39 采纳率: 85.7%
浏览 25
已结题

c语言单词本的拼写问题

VS2010环境,现实的问题解决不了。先问题后代码

c(12): error C2146: 语法错误: 缺少“)”(在标识符“cor”的前面)
c(12): error C2081: “word”: 形参表中的名称非法
c(12): error C2061: 语法错误: 标识符“cor”
c(12): error C2059: 语法错误:“;”
c(12): error C3409: 不允许空特性块
c(12): error C2059: 语法错误:“)”
c(12): error C2059: 语法错误:“;”
c(27): warning C4013: “spell”未定义;假设外部返回 int
c(37): error C2371: “spell”: 重定义;不同的基类型
c(103): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
c(153): fatal error C1075: 与左侧的 大括号“{”(位于“d:\b22130809\程序设计1\程序设计1\程序设计1.c(84)”)匹配之前遇到文件结束

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10//错误单词个数
#define EN 50//单词英文长度
#define CN 50//单词中文长度
#define WN 10//每轮背单词个数
FILE *fp;
int num=0;
char options;
int score;
void spell(char *fName,word cor[]);
void reflect();
void spellwrong();
typedef struct word     //每轮所背单词
{
    char English[EN];//每个单词英文
    char Chinese[CN];//每个单词中文
}word;
word character[WN];//每组单词个数
word fail[N];//每组背完错误单词个数
int main()
{
    char choose;
    char filename[50];
    scanf("%s",filename);//本轮学习单词所在文件名
    spell(filename,character);//拼写函数
    reflect();//反馈:最终得分,是否重背
    if(options=='y')
        fseek(fp,-1000L,1);
    if(options=='Y')
        spellwrong();
    if(options=='n');
    return 0;
}
void spell(char *fName,word cor[])
{
    int flag;
    char try[50];
    fp=fopen("fName","r");
    if(fp==0)
    {
        printf("file erro!\n");
        exit(1);
    }
    fscanf(fp,"%s%s",cor[num].English,cor[num].Chinese);
    while(!feof(fp))
    {
        num++;
        fscanf(fp,"%s%s",cor[num].English,cor[num].Chinese);
    }
    fclose(fp);//将本轮学习单词输入数组
    for(num=0;num<10;num++)//判断正误
    {
        printf("%s\n",cor[num].Chinese);
        scanf("%s",try);
        flag=strcmp(cor[num].English,try);
        if(flag==0)
            num++;
        else
            {
                strcpy(fail[num].English,cor[num].English);//将错误单词导入临时错题本
                strcpy(fail[num].Chinese,cor[num].Chinese);//供再次背诵使用
                fp=fopen("D:\\Desktop\\程序设计错题本.txt","a+");
                if(fp==0)
                   { 
                     printf("file erro!\n");
                     exit(1);
                   }
                     fputs(cor[num].English,fp);
                     fputc('\t',fp);
                     fputs(cor[num].Chinese,fp);
                     fputc('\n',fp);
                     fclose(fp);//将错误单词永久存入错题本文件
                     do{
                         printf("错误,请重新输入");
                         scanf("%s",try);
                         flag=strcmp(cor[num].English,try);
                       }while(flag);
            }
    }
}
void spellwrong()//再次拼写错题
{
    int n;
    int Flag;
    char againtry[50];
    for(n=0;n<num;n++)
    {
        printf("%s\n",fail[n].Chinese);
        scanf("%s",againtry);
        Flag=strcmp(fail[n].English,againtry);
        if(Flag==0)
            n++;
        else
            do{
                  printf("错误,请重新输入");
                  scanf("%s",againtry);
                  Flag=strcmp(fail[num].English,againtry);
               }while(Flag);

}
void reflect();//反馈函数:最终得分,是否重背
{
    score=num*10;
    printf("最终得分为%d\n",score);
    if(num<10)
         {
               printf("是否选择错题重背?(Y/N)\n");
               options=getchar();
               getchar();
               switch(options)
               {
                  case 'Y':break;
                  case 'N':printf("是否再背一次?(y/n)\n");
                           options=getchar();
                           getchar();
                           switch(options)
                           {
                              case 'y':break;
                              case 'n':;
                           }
               } 
         }
    else
         printf("没有错题继续努力");
         printf("是否再背一次?(y/n)\n");
    
}

  • 写回答

1条回答 默认 最新

  • 少林and叔叔 2023-04-13 22:13
    关注

    将里面的cor[]变为*cor,函数定义里面!
    程序中还存在格式错误,具体程序修改如下所示:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N 10//错误单词个数
    #define EN 50//单词英文长度
    #define CN 50//单词中文长度
    #define WN 10//每轮背单词个数
    FILE *fp;
    int num=0;
    char options;
    int score;
    
    void reflect();
    void spellwrong();
    typedef struct word     //每轮所背单词
    {
        char English[EN];//每个单词英文
        char Chinese[CN];//每个单词中文
    }word;
    void spell(char *fName,word *cor);
    word character[WN];//每组单词个数
    word fail[N];//每组背完错误单词个数
    int main()
    {
        char choose;
        char filename[50];
        scanf("%s",filename);//本轮学习单词所在文件名
        spell(filename,character);//拼写函数
        reflect();//反馈:最终得分,是否重背
        if(options=='y')
            fseek(fp,-1000L,1);
        if(options=='Y')
            spellwrong();
        if(options=='n');
        return 0;
    }
    void spell(char *fName,word *cor)
    {
        int flag;
        char try[50];
        fp=fopen("fName","r");
        if(fp==0)
        {
            printf("file erro!\n");
            exit(1);
        }
        fscanf(fp,"%s%s",cor[num].English,cor[num].Chinese);
        while(!feof(fp))
        {
            num++;
            fscanf(fp,"%s%s",cor[num].English,cor[num].Chinese);
        }
        fclose(fp);//将本轮学习单词输入数组
        for(num=0;num<10;num++)//判断正误
        {
            printf("%s\n",cor[num].Chinese);
            scanf("%s",try);
            flag=strcmp(cor[num].English,try);
            if(flag==0)
                num++;
            else
                {
                    strcpy(fail[num].English,cor[num].English);//将错误单词导入临时错题本
                    strcpy(fail[num].Chinese,cor[num].Chinese);//供再次背诵使用
                    fp=fopen("D:\\Desktop\\程序设计错题本.txt","a+");
                    if(fp==0)
                    { 
                        printf("file erro!\n");
                        exit(1);
                    }
                    fputs(cor[num].English,fp);
                    fputc('\t',fp);
                    fputs(cor[num].Chinese,fp);
                    fputc('\n',fp);
                    fclose(fp);//将错误单词永久存入错题本文件
                    do{
                        printf("错误,请重新输入");
                        scanf("%s",try);
                        flag=strcmp(cor[num].English,try);
                    }while(flag);
                }
        }
    }
    void spellwrong()//再次拼写错题
    {
        int n;
        int Flag;
        char againtry[50];
        for(n=0;n<num;n++)
        {
            printf("%s\n",fail[n].Chinese);
            scanf("%s",againtry);
            Flag=strcmp(fail[n].English,againtry);
            if(Flag==0)
                n++;
            else
                do{
                      printf("错误,请重新输入");
                      scanf("%s",againtry);
                      Flag=strcmp(fail[num].English,againtry);
                   }while(Flag);
     
        }
    }
    
    void reflect()//反馈函数:最终得分,是否重背
    {
        score=num*10;
        printf("最终得分为%d\n",score);
        if(num<10)
        {
            printf("是否选择错题重背?(Y/N)\n");
            options=getchar();
            getchar();
            switch(options)
            {
                case 'Y':break;
                case 'N':printf("是否再背一次?(y/n)\n");
                        options=getchar();
                        getchar();
                        switch(options)
                        {
                            case 'y':break;
                            case 'n':;
                        }
            } 
        }
        else
        {
             printf("没有错题继续努力");
             printf("是否再背一次?(y/n)\n");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月14日
  • 已采纳回答 4月14日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 android报错 brut.common.BrutException: could not exec (exit code = 1)
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?