a-zの文字列を変化させて出力したい
なんか遊びで作ってみました。
文字列aaaが入力され、変換度合い1が入力されたら、出力がbbbみたいなことをしてます。
a → 25 → z
a → 26 → a
って感じです。
zを変換させるのにどうやって、aとかbとかに戻すのかに結構悩みました。
#include <stdio.h> int main(void) { char input[255],output[255]; char alpha[]="abcdefghijklmnlpqrstuvwxyz"; int c,i,x; fprintf(stdout,"Please input convert strings.\nstrings is a-z.\n>"); fscanf(stdin,"%s",&input); fprintf(stdout,"The degree of conversion\n>"); fscanf(stdin,"%d",&c); for(i=0;i<255;i++){ if(input[i]=='\0'){ output[i]=input[i]; break; } x=(input[i]-'a'+c%26)%26; output[i]=alpha[x]; } fprintf(stdout,"converted strings\n=>"); fprintf(stdout,"%s\n",output); return 0; }
実行してみる。
$ ./a.out Please input convert strings. strings is a-z. >a The degree of conversion >1 converted strings =>b $ ./a.out Please input convert strings. strings is a-z. >abc The degree of conversion >25 converted strings =>zab
なんか反応をして頂けたら嬉しいです。
宜しくお願いします。