#include <stdio.h>
int main()
{
char _char = 32;
int x, p, i, d;
scanf("%d ", &x);
while(_char == 32)
_char = getchar();
x = x%26;
printf("The encrypted string is: ");
while((_char >= 'a' && _char <= 'z') || (_char >= 'A' && _char <= 'Z'))
{
if(_char >= 'a' && _char <= 'z')
_char = 'a' + (_char + x - 'a')%26;
else
_char = 'A' + (_char + x - 'A')%26;
d = 'a' - 'A';
p = (_char >= 'a') ? _char - d : _char + d;
printf("%c", p);
scanf("%c", &_char);
}
return 0;
}
コードの説明:プログラムは数字「x」とスペースとその後の文字列を受信し、最初の数字まで、またはそれ以上受け取る手紙私はコードブロックでそれを実行したときにそれが正常に動作しますが、私はファイルとして入力を挿入するためにCMDを使用したとき、私は挿入した場合、これは私に無限ループを与える:無限ループin C
1 FffF
私は0を追加したり、任意の数は、それが正常に動作したときに:
暗号化された文字列は、次のとおりです:BBBcccDDDeeefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz....
は、どのように私はこれをsloveすることができます
1 FffF0
無限ループがかなったようなものですか!?
小さな先端をループの
break
返さない必要があるとき:代わりにあなたが手紙をチェックするために 'while'状態で行うように比較を行うための、便利な機能がありますいわゆるisalphaです。また、文字が大文字か小文字かを確認する関数islowerとisupperもあります。 –