我用下面的代码对来自用户的字符串进行编码:
#include <stdio.h>
#include <stdlib.h>
char substitute(char letter, char* cipher)
{
int i;
int cipher_length = strlen(cipher);
char substitution = letter;
for(i = 0; i < cipher_length; ++i)
{
if(cipher[i] == letter)
{
substitution = cipher[(i%2) ? (i-1) : (i+1)];
break;
}
}
return substitution;
}
void GaDeRy(char* stringtoencode, char* fullcipher)
{
int i;
char* cipher = fullcipher;
int string_length = strlen(stringtoencode);
for(i = 0; i < string_length; ++i)
{
stringtoencode[i] = substitute(stringtoencode[i], cipher);
}
}
int main()
{
char* cipher1 = "GADERYPOLUKIgaderypoluki";
char* cipher2 = "POLITYKARENUpolitykarenu";
char* cipher3 = "KACEMINUTOWYkaceminutowy";
char stringtoencode[20] = {'0'};
int option;
printf("Enter a string that you want to encode:nMax 20 charactersn");
scanf("%s", stringtoencode);
printf("Choose the ciphern");
printf("[1]GA-DE-RY-PO-LU-KIn");
printf("[2]PO-LI-TY-KA-RE-NUn");
printf("[3]KA-CE-MI-NU-TO-WYn");
scanf("%d",&option);
switch(option)
{
case 1: GaDeRy(stringtoencode, cipher1 );
break;
case 2: GaDeRy(stringtoencode, cipher2 );
break;
case 3: GaDeRy(stringtoencode, cipher3 );
break;
}
printf("Encrypted as: %sn", stringtoencode);
}
我必须将其更改为逐个符号编码。txt文件。我能得到什么帮助或建议吗?
#include <stdio.h>
#include <stdlib.h>
char substitute(char letter, char* cipher)
{
int i;
int cipher_length = strlen(cipher);
char substitution = letter;
for(i = 0; i < cipher_length; ++i)
{
if(cipher[i] == letter)
{
substitution = cipher[(i%2) ? (i-1) : (i+1)];
break;
}
}
return substitution;
}
void GaDeRy(char* stringtoencode, char* fullcipher)
{
int i;
char* cipher = fullcipher;
int string_length = strlen(stringtoencode);
for(i = 0; i < string_length; ++i)
{
stringtoencode[i] = substitute(stringtoencode[i], cipher);
}
}
int main()
{
char c;
int option;
FILE *plik = fopen( "hp.txt", "rt" );
char* cipher1 = "GADERYPOLUKIgaderypoluki";
char* cipher2 = "POLITYKARENUpolitykarenu";
char* cipher3 = "KACEMINUTOWYkaceminutowy";
printf("Choose the ciphern");
printf("[1]GA-DE-RY-PO-LU-KIn");
printf("[2]PO-LI-TY-KA-RE-NUn");
printf("[3]KA-CE-MI-NU-TO-WYn");
scanf("%d",&option);
while((c = getchar()) != EOF)
{
c = getc( plik );
switch(option)
{
case 1: putchar(substitute(c, cipher1));
break;
case 2: putchar(substitute(c, cipher2));
break;
case 3: putchar(substitute(c, cipher3));
break;
}
}
fclose( plik );
}