C语言关键字中英翻译机程序不能实现我想要的功能,请问一下我的代码要怎么改?

问题遇到的现象和发生背景

运行没有出现错误,但是运行出来无法实现该有的功能

问题相关代码,请勿粘贴截图

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

void main()
{
char *e[]={"auto","case","char","const","continue","default",
"do","double","else","enum","extern","float","for","goto","if",
"int","long","register","return","short","signed","sizeof","static",
"struct","switch","typedef","unsigned","union","void","volatile","while"};

char *c[]={"声明变量","声明自动变量","跳出当前循环","开关语句分支",

"声明字符型变量或函数返回值类型","声明只读变量","结束当前循环并开始下一轮循环","开关语句中的默认分支",

"循环语句的循环体","声明双精度浮点型变量或函数返回值类型","条件语句否定分支",

"声明枚举类型","声明变量或函数是在其他文件或本文件的其他位置定义","声明浮点型变量或函数返回值","一种循环语句","无条件跳转语句",

"条件语句","声明整型变量或函数","声明长整型变量或函数返回值","声明寄存器变量","子程序返回语句(可以带参数,也可以不带参数)",

"声明短整型变量或函数返回值","声明有符号类型变量或函数","计算数据类型或变量长度","声明静态变量","声明结构体类型",

"用于开关语句","用以给数据类型取别名","声明无符号类型变量或函数","声明共用体类型","声明函数无返回值或无参数,声明无类型指针",

"说明变量在程序执行中可被隐含地改变","循环语句的循环条件"};//一共31个关键字

int a,i,j;
char k[50];
printf("欢迎使用C语言关键字中英翻译机!\n");
printf("请输入a的值(输入0为中译英,输入1为英译中):");
scanf("%d",a);
if(a==0)
{
    for(i=0;i<100;i++)
    {
        printf("请输入中文的C语言关键字:");
        scanf("%s",k);
        if(strcmp(k,"bye")==0)exit(0);
        for(j=0;j<10;j++)
        {
            if(strcmp(k,*c[j])==0)
            {
                printf("%s对应的英文是%s\n",*c[j],*e[j]);
                break;
            }
        }
    }
}

if(a==1)
{
    for(i=0;i<100;i++)
    {
        printf("请输入英文的C语言关键字:");
        scanf("%s",k);
        if(strcmp(k,"bye")==0)exit(0);
        for(j=0;j<10;j++)
        {
            if(strcmp(k,*e[j])==0)
            {
                printf("%s对应的中文是%s",*e[j],*c[j]);
                break;
            }
        }
    }
}

}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

有一些代码细节关注一下,建议可以用beyond compare工具对比一下我的代码和你的代码,思考这些代码细节。
主要问题就是,
第一:注意用数组存储字符串时,数组最好提前初始化为0,或者在输入字符串的最后塞终结符'\0'
第二:注意指针数组的用法,通过指针取每个数组中的字符串的方法。 (取字符串本身就是取首地址,然后一直找终结符'\0',指针也是指向一个地址) 可以了解一下指针数组存储字符串的逻辑~

简单输入进行测试了一下,中英都是ok的,但是可能覆盖不全

img


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

    int main()
    {
        const char* e[] = { "auto","case","char","const","continue","default",
        "do","double","else","enum","extern","float","for","goto","if",
        "int","long","register","return","short","signed","sizeof","static",
        "struct","switch","typedef","unsigned","union","void","volatile","while" };

       const  char* c[] = { "声明变量","声明自动变量","跳出当前循环","开关语句分支",

        "声明字符型变量或函数返回值类型","声明只读变量","结束当前循环并开始下一轮循环","开关语句中的默认分支",

        "循环语句的循环体","声明双精度浮点型变量或函数返回值类型","条件语句否定分支",

        "声明枚举类型","声明变量或函数是在其他文件或本文件的其他位置定义","声明浮点型变量或函数返回值","一种循环语句","无条件跳转语句",

        "条件语句","声明整型变量或函数","声明长整型变量或函数返回值","声明寄存器变量","子程序返回语句(可以带参数,也可以不带参数)",

        "声明短整型变量或函数返回值","声明有符号类型变量或函数","计算数据类型或变量长度","声明静态变量","声明结构体类型",

        "用于开关语句","用以给数据类型取别名","声明无符号类型变量或函数","声明共用体类型","声明函数无返回值或无参数,声明无类型指针",

        "说明变量在程序执行中可被隐含地改变","循环语句的循环条件" };//一共31个关键字

        int a, i, j;
        char k[50] = {0};
        printf("欢迎使用C语言关键字中英翻译机!\n");
        printf("请输入a的值(输入0为中译英,输入1为英译中):");
        scanf_s("%d", &a);
        if (a == 0)
        {
            for (i = 0; i < 100; i++)
            {
                printf("请输入中文的C语言关键字:");
                scanf_s("%s", k,50);
                if (strcmp((const char*)k, "bye") == 0)
                {
                    exit(0);
                }
                for (j = 0; j < 10; j++)
                {
                    if (strcmp(k, c[j]) == 0)
                    {
                        printf("%s对应的英文是%s\n", c[j], e[j]);
                        break;
                    }
                }
            }
        }

        if (a == 1)
        {
            for (i = 0; i < 100; i++)
            {
                printf("请输入英文的C语言关键字:");
                scanf_s("%s", k, 50);
                if (strcmp((const char*)k, "bye") == 0)
                {
                    exit(0);
                }
                    
                for (j = 0; j < 10; j++)
                {
                    if (strcmp(k, e[j]) == 0)
                    {
                        printf("%s对应的中文是%s \n", e[j], c[j]);
                        break;
                    }
                }
            }
        }
        return 0;
    }

scanf(“ ”,&a)