繁体   English   中英

C中的换位密码

[英]Transposition Cipher in C

我已经能够使换位密码工作一些。 但是,我遇到了诸如不能在一个文本文件中接受超过5个字符的问题。 当前,当加密的文本输出到输出文件中时,我的程序也无法转到新行。 我也无法一遍又一遍地循环我的换位密码。

例如,如果trans1.txt在一行中全部包含文本“ JacksJacksJacks”,则应在trans2.txt的第一行上全部打印“ csJakcsJakcsJak”

换位密码也应重置每一行。 每次换行时,它应从位置2重新开始,然后从4重新开始,然后从0重新开始。

#include <stdio.h>

int c, j, i, k,p=0;
char transposition[]={2,4,0,1,3}, input[256];
int main(){
FILE *file1=fopen("trans1.txt", "r");
FILE *file2=fopen("trans2.txt", "w");

    while(fgets(input,sizeof(input),file1)!=NULL){
        for(i=0;i<5;i++){
                k=transposition[i];
                fprintf(file2,"%c",input[k]);           

        }

    }

return 0;
}
#include <stdio.h>

int main(){
    char transposition[]={2,4,0,1,3};
    char input[256] = "JacksJacksJacks\n";
    int len = sizeof(transposition);
    char ch, temp[len];
    int i, j, k;

    j=i=0;
    do {
        for( ; '\0'!=(ch = input[i]) && ch != '\n';++i){
            temp[j++] = ch;
            if(j == len){
                j=0;
                ++i;
                break;
            }
        }
        while(j!=0){
            temp[j++] = '.';//pading if(i % len != 0)
            if(j == len)
                j = 0;
        }
        for(k=0;i && k<len;++k){
            printf("%c", temp[transposition[k]]);
        }
    }while(ch != '\n' && ch != '\0');
    printf("\n");

    return 0;
}

同一件事的另一种方式

i=0;
do {
    for(j=0;j<len;++j){
        ch = input[i];
        if(ch != '\n' && ch != '\0'){
            temp[j] = ch;
            ++i;
        } else {
            temp[j] = '.';
        }
    }
    if(temp[0] != '.')
        for(k=0;k<len;++k){
            printf("%c", temp[transposition[k]]);
        }
}while(ch != '\n' && ch != '\0');
printf("\n");

一些提示:

  • for循环处理5个字符后会发生什么?
  • 您的问题似乎是面向角色的。 为什么不使用getc()?

额外的信用:

  • 例如,如果第二行少于5个字符,会发生什么情况?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM