Я хочу сделать простую программу, которая выполняет следующие действия,Почему XORing строка в c дает мне значения мусора?
- Возьмите входную строку из пользователя, полукокс IP [50].
- XOR каждый символ строки с символом '0'.
Отобразить созданный таким образом Шифрованный текст, char op [50].
И используя эту строку (op), снова расшифруйте строку и дайте результат такой же, как и входная строка. char rv [50].
Показать расшифрованный текст.
Итак, для этого я написал код, приведенный ниже,
#include<stdio.h>
#include<string.h>
void main(){
int i=0,len;
char ip[50],op[50],rv[50],b='0';
printf("Enter the original text: ");
fgets(ip,50,stdin);
len=strlen(ip);
//ip is input text
//op is output cypher text
//rv is again the input text obtained by XORing '0'
while(i<len-1){
op[i]=(ip[i++]^b); //XORing the input character with '0' and storing it in output string ^__^
}
op[i]='\0';
printf("\nThe Cypher Text is: ");
i=0;
puts(op);
while(i<len-1){
printf("%c",op[i++]);
}
i=0;
while(i<len-1){
rv[i]=(op[i++]^b);//XORing the output text again in hope of getting the input text back -__-
}
rv[i]='\0';
printf("\nThe Original text again is: ");
puts(rv);
i=0;
printf("\n");
while(i<len-1){
printf("%c",rv[i++]);
}
}
, но выход всегда
Выход
C:\Users\cypher>gcc cypher.c
C:\Users\cypher>a
Enter the original text: qwerty
The Cypher Text is: ▄AGUBD
▄AGUBD
The Original text again is: Ω∞qwer
Ω∞qwer
Примечание: с помощью путы() просто для проверки ошибок. Любая помощь будет оценена, спасибо.
почему '
мой массив начинается с 0 до длины строки – Paul
.............. так? –