替换C中字符串的元素

替换C中字符串的元素,c,string,C,String,斯宾克斯兄弟在东京大都会警察总部安放了一枚炸弹。相当地 为了方便起见,他们留下了一个加密的字符串,当然是作为拆除炸弹的钥匙,但是 还有更多。 警方根据之前与斯芬克斯兄弟的接触推断出了一个可能的错误 解密。字符串中的某些字母需要根据需要替换为其他字母 使用解密模式。解密的信件有可能再次被解密/替换。 您需要替换字符串中的每个字母,直到无法进一步替换为止,才能获得密钥。 他们要求你尽快这样做,因为总部的炸弹就要爆炸了 随时爆炸 输入 第一行包含字符串s1≤ |S|≤ 105仅由小写字母组成。下一行有

斯宾克斯兄弟在东京大都会警察总部安放了一枚炸弹。相当地 为了方便起见,他们留下了一个加密的字符串,当然是作为拆除炸弹的钥匙,但是 还有更多。 警方根据之前与斯芬克斯兄弟的接触推断出了一个可能的错误 解密。字符串中的某些字母需要根据需要替换为其他字母 使用解密模式。解密的信件有可能再次被解密/替换。 您需要替换字符串中的每个字母,直到无法进一步替换为止,才能获得密钥。 他们要求你尽快这样做,因为总部的炸弹就要爆炸了 随时爆炸

输入

第一行包含字符串s1≤ |S|≤ 105仅由小写字母组成。下一行有一个 单整数m1≤ M≤ 325,表示替换的数量。接下来的M行有两个 间隔字符,ci和di,di是ci的替代品

输出

在所有字符替换后打印最终字符串

可以保证没有周期性更换

输入

输出

我就是这样编码的。我不能接受超过3行的输入


也许这是一个错误,我以前没有这样做过,看起来你在第一次%c扫描中增加了索引 有一个解决方案,你可以使用strtokstr,string.h中的分隔符,每次像lp一样扫描整个字符串,然后用白色空格将其拆分

char d[3];
scanf("%s", d);
x = s[0];
y = s[2];
然后增加索引等

还是分开

char *token;
char d[3];
scanf("%s", d);
token = strtok(d, ' ');
x = token[0];
y = token[1];
祝你好运

scanf("%c %c",&x,&y); 
改为

scanf(" %c %c",&x,&y);
再多一点空间

因为当你进入

将推送newlinewindows.linux可能与\t\n\n稍有不同,如果您想知道google将其放入缓冲区

当您使用%c将读取最后一次时,请按而不是跳转空格“\n”、“\t”

在%c前面添加空格时


scanf将在读取缓冲区之前跳转空格“\n”和“\t”,然后通过键盘获得正确的输入

看起来像是家庭作业问题!请尝试说明哪里出了问题。我认为第一个for循环有问题,正如我之前说过的,我不能接受超过3行的输入。任何关于缓冲区溢出的见解都是有用的,尽管在最大大小为2个字符的字符串上使用strtok缓冲区大小为3。。。没用。
char *token;
char d[3];
scanf("%s", d);
token = strtok(d, ' ');
x = token[0];
y = token[1];
scanf("%c %c",&x,&y); 
scanf(" %c %c",&x,&y);