コード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void processFile(char *array, int *size);
void cipher(char *array, int size);
void outputCode(char *array, int size);
FILE *fpIn,*fpOut;
int main(void){
char array[300];
int size=0;
fpOut=fopen("csis.txt","w");
processFile(array,&size);
cipher(array,size);
outputCode(array,size);
fclose(fpOut);
return 0;
}
void processFile(char *array,int *size){
int i,k=0;
if (!(fpIn=fopen("congress.txt","r"))){
printf("congress.txt could not be opened.");
}
fgets(array,300,fpIn);
for (i=0;i<300;i++){
if (array[i]>=97&&array[i]<=122){
array[i]=array[i]-32;
}
else if (array[i]>=65&&array[i]<=90){
array[i]=array[i];
}
else{k=i;
for (i=i;i<300;i++){
array[i]=array[i+1];
}i=k;
}
}
*size=strlen(array);
}
void cipher(char *array, int size){
int i,k=1;
for (i=0;i<size;i++){
if ((array[i]+k)>90){
array[i]=array[i]+k-26;
}
else{
array[i]=array[i]+k;
}
}
}
void outputCode(char *array, int size){
int i;
for (i=0;i<size;i++){
if (i%5==0&&i!=0&&i%50!=0){
printf(" %c",array[i]);
}else if (i%50==0&&i!=0){
printf("\n%c",array[i]);
}else{
printf("%c",array[i]);
}
}
printf("\n");
}
ファイルから読み込んだ文字列をアルファベットの小文字は大文字にして、それ以外は削除してさらにそれを1つシフトさせた文字列を出力するプログラムです。
エラーは出ていないのですが、出力が合ってません。
アルファベット以外の文字があった箇所からの出力がTのはずなのにZが出てきたりしています。