Я тестирую расшифровку строк с помощью ключа в стандартном C. Я ввожу строку, вводя свои замены и строя шифр на основе истории моих замещений. Например, если я заменил c на h в строке, я сохраню его в строчном шифре как "ch "
, где «обозначает начало и конец строки».Отображение неправильного символа в C
Моя проблема в том, что я пытаюсь запустить обратно через мою строку и вернуть символы обратно к своим оригиналам, мои персонажи запутались и показ как значки сердца. Любое понимание этого было бы очень оценено, я уверен, что я ошибаюсь где-то очень просто.
char from[] = "";
char to[] = "";
for (int i = 0; i <= strlen(cipher); i++){
if (i == 0){
from[strlen(from)] = cipher[i];
}
else if(cipher[i-1] == ' '){
from[strlen(from)] = cipher[i];
}
else{
to[strlen(to)] = cipher[i];
}
}
for (int i = 0; i <= strlen(str); i++){
for(int j = 0; j <= strlen(to); j++){
if(str[i] == to[j]){
str[i] = from[j];
}
}
}
printf("\nUNSCRAMBLED STRING IS: %s" ,str);
cipher - это массив символов, содержащий мой ключ шифрования. [] Удерживает второе значение в шифрованном ключе. Из [] содержит мою первую. Str - это массив символов строки, которая должна быть расшифрована.
среди многих других проблем, помните, что индекс в шифров [] увеличивается 3 байта на запись, а не 1 байт. Также 'from [] и' to [] составляют только 1 байт, а этот байт содержит '\ 0', поэтому доступ к этим массивам, прошедшим индекс 0, является неопределенным поведением и может/приведет к событию сбоя seg – user3629249