通过登录C对文件符号进行编码

时间:2016-11-12 19:21:54

标签: c

所以我有这个代码来编码来自用户的字符串:

#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 characters\n");
    scanf("%s", stringtoencode);

    printf("Choose the cipher\n");
    printf("[1]GA-DE-RY-PO-LU-KI\n");
    printf("[2]PO-LI-TY-KA-RE-NU\n");
    printf("[3]KA-CE-MI-NU-TO-WY\n");

    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: %s\n", stringtoencode);
}

我必须将其更改为按标志编码.txt文件。 我可以获得任何帮助或提示吗?

1 个答案:

答案 0 :(得分:0)

#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 cipher\n");
printf("[1]GA-DE-RY-PO-LU-KI\n");
printf("[2]PO-LI-TY-KA-RE-NU\n");
printf("[3]KA-CE-MI-NU-TO-WY\n");
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 );  
}