我正在尝试使简单的加密算法。我的目标是将abc(可以是任何单词)转换为123.然后应用一些函数,然后再次转换为文本,这里是我的算法。关于filing.I创建unencrypted.txt这是写在“你好世界”,然后调试程序它创建encrypted.txt,但只写worl d.Why它不会写你好world.always需要最后一个词和空间“世界”,你可以帮我吗?在C编程中提交
编辑 https://www.dropbox.com/s/i3afkm439iv3d0v/last%20form.txt这是最后的表格我添加multply 2和国防部27 encryption.it工作better.but仍然problem.there是“世界你好”在TXT file.its加密 pjxxcpjxxcpjxxcpjxxcscixhpjxxcqscixhqpjxxc scixh 但是它必须是是pjxxc scixh
#include <cstdlib>
#include <iostream>
#include<stdio.h>
#include<string.h>
#include <conio.h>
int main()
{
int g,p,sak,v,r,t,z,o,c,l,i,j,k,*D;
char alfabe[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};
FILE *fp1;
FILE *mat;
char word[20];
fp1 = fopen("unencrypted.txt","r");
do {
g = fscanf(fp1,"%s",word); /* dosyadan bir kelime oku... */
if (g != EOF) {
mat=fopen("encrypted.txt","w") ;
c=strlen(word);
printf("has %d letters ", c);
D = (int *) malloc(sizeof(int)*c);
for(i=0;i<c;i++) {
for(j=0;j<26;j++) {
if(word[i]==alfabe[j]) {
D[i]=(j+1);
break;
}
}
}
printf("\nlast form before translation ");
for(l=0;l<c;l++) {
printf("%d",D[l]); /*it s just for control */
}
for(z=0;z<c;z++){
o=D[z];
word[z]=alfabe[o-1] ; }
printf("\nnew form of word: ");
for(k=0;k<c;k++) {
fprintf(mat," %c",word[k]);
}
fclose(mat);
}
} while (g != EOF);
fclose(fp1); }
与您的问题无关,但您使用O(n)算法,其中O(n)容易完成:创建一个将字符映射到其数字表示(快速版isaplha()大多数C库都这样做,所以看那里)。 – tbert