【发布时间】:2014-04-21 05:08:36
【问题描述】:
在这个凯撒密码中,我如何制作它才能读取空格、特殊字符 (!@#$*...) 和数字,并保持原样并打印它们?我还在 fgets while 循环的末尾放了一个 fprintf(file2,"\n") ,它确实开始了一个新行,但它总是在前一行的末尾打印一个奇怪的字符。
#include <stdio.h>
int main (int argc, char *argv[]) {
char caesar[256];
int shift;
FILE *file1=fopen(argv[1],"r");
FILE *file2=fopen(argv[2],"w");
sscanf(argv[3], "%d", &shift);
while(fgets(caesar,sizeof(caesar),file1)!=NULL){
int i = 0;
while (caesar[i] != '\0') {
if (((caesar[i] + shift) >= 65 && (caesar[i] + shift) <= 90)||((caesar[i] + shift) >= 97 && (caesar[i] + shift) <= 122)) {
caesar[i] += (shift);
}
else {
caesar[i] += (shift - 26);
}
i++;
}
fprintf(file2,"%s", caesar);
fprintf(file2,"\n");
}
return 0;
}
【问题讨论】:
-
永远不要这样做。
标签: c arrays encryption shift