HJ66 配置文件恢复

在这里插入图片描述
在这里插入图片描述
审题,利用范例来验证
思路理好了在写

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

#if 0
#define dbg printf
#else
#define dbg
#endif

char *cmd[6] = {"reset", "reset board", "board add", "board delete", "reboot backplane", "backplane abort"};

void execu(int index)
{
    switch (index)
    {
        case 0:
            printf("reset what\n");
            break;
        case 1:
            printf("board fault\n");
            break;
        case 2:
            printf("where to add\n");
            break;
        case 3:
            printf("no board at all\n");
            break;
        case 4:
            printf("impossible\n");
            break;
        case 5:
            printf("install first\n");
            break;
        default:
            printf("unknown command\n");
            break;
    }
}

int get_word_cnt(char *wd)
{
    int i;
    int cnt = 1;
    
    for(i=0; i<strlen(wd); i++)
    {
        if(wd[i] == ' ')
        {
            cnt++;
        }
    }
    
    return cnt;
}

void two_wd_split(char *wd, char *first, char *second)
{
    int i = 0;
    
    while(wd[i] != ' ')
    {
        i++;
    }

    strncpy(first, wd, i);
    strcpy(second, wd+i+1);
    dbg("(%d):first=(%s), second=(%s)\n", __LINE__, first, second);
}

int one_wd(char *a, char *b)
{
    int i;
    
    if(strlen(a) < strlen(b))
    {
        return 0;
    }
    for(i=0; i<strlen(b); i++)
    {
        if(a[i] != b[i])
        {
            return 0;
        }
    }
    
    return 1;
}

int one_wd_pair(char *in)
{
    char f[32] = {0};
    char s[32] = {0};
    int i;
    
    for(i=0; i<(sizeof(cmd)/sizeof(char *)); i++)
    {
        if(get_word_cnt(cmd[i])==1 && one_wd(cmd[i], in)==1)
        {
            return i;
        }
    }
    
    return 0;
}

int two_wd_pair(char *in)
{
    int i, j;
    int cnt = 0;
    char first[32] = {0};
    char second[32] = {0};
    char f[32] = {0};
    char s[32] = {0};
    two_wd_split(in, first, second);
    
    for(i=0; i<(sizeof(cmd)/sizeof(char *)); i++)
    {
        if(get_word_cnt(cmd[i]) == 2)
        {
            memset(f, 0, sizeof(f));
            memset(s, 0, sizeof(s));
            two_wd_split(cmd[i], f, s);
            if(one_wd(f, first)==1 && one_wd(s, second)==1)
            {
                cnt++;
                j = i;
            }
        }
    }
    
    if(cnt == 1)
    {
        return j;
    }
    else
    {
        return 6;
    }
}

int main(void)
{
    char in[1024][32] = {0};
    int out[1024] = {0};
    char p;
    int i, j;
    int cnt;
    
    i = 0;
    j = 0;
    while(scanf("%c", &p) != EOF)
    {
        if(p == '\n')
        {
            dbg("(%d):in[%d]=(%s)\n", __LINE__, i, in[i]);
            i++;
            j = 0;
        }
        else
        {
            in[i][j] = p;
            j++;
        }
    }
    dbg("(%d):i=%d\n", __LINE__, i);
    for(j=0; j<i&&strlen(in[j])>0; j++)
    {
        dbg("(%d):in[%d]=(%s)\n", __LINE__, j, in[j]);
    }

    for(j=0; j<i&&strlen(in[j])>0; j++)
    {
        cnt = get_word_cnt(in[j]);
        if(cnt >= 3)
        {
            dbg("(%d):\n", __LINE__);
            out[j] = 6;
        }
        else if(cnt == 2)
        {
            dbg("(%d):\n", __LINE__);
            out[j] = two_wd_pair(in[j]);
        }
        else
        {
            dbg("(%d):\n", __LINE__);
            out[j] = one_wd_pair(in[j]);
        }
    }
    
    for(j=0; j<i&&strlen(in[j])>0; j++)
    {
        execu(out[j]);
    }
    
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值