聚合密令,输入若干行密令,然后进行处理

输入若干行密令,然后进行处理,要求如下:
①第一条密令的格式:I #s s#cy #d
其中若干个“#x”(x 表示要替换的类型)需要依次被后面几行密令进行替换。
②接下来若干行密令要按照第一条命令中“#x”出现的顺序依次在第一条密令中
进行替换,且保证密令的数据类型一一对应。x 为一个英文字符。
③输出替换后的密令
输入格式:
按照上面的要求输入若干行密令
输出格式:
一行字符串
输入样例 1:
I #s s#cy #d
should
a
666
输出样例 1:
I should say 666
输入样例 2:
H#sy H#c#seen
app
a
llow
输出样例 2:
Happy Halloween

查找#x并用后面输入的字符替换,运行结果如下:

img

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
//判断字符是否是英文字符
int isalpha(char c)
{
    if (c >= 'a' && c <= 'z')
        return 1;
    if (c >= 'A' && c <= 'Z')
        return 1;
    return 0;
}


int main()
{
    char ml[100]; //密令
    char th[100]; //替换的字符串
    int i = 1;
    int j = 0;
    char dst[200] = { 0 };
    gets_s(ml);
    while (ml[i] != '\0' && ml[i]!='\n')
    {
        if (ml[i - 1] == '#' && isalpha(ml[i]) )
        {
            gets_s(th); //读取替换字符
            strcat(dst, th);
            j = strlen(dst);
            i++;
        }
        else
        {
            dst[j++] = ml[i-1];
        }
        i++;
    }
    //最后一个字符
    if (i >= 2 && ml[i - 2] != '+')
        dst[j] = ml[i - 1];

    printf("%s", dst);
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632