#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 将输入作为文件插入时,如果我插入,这会给我一个无限循环:
1 FffF
当我添加 0 或任何数字时它工作正常:
1 FffF0
无限循环是这样的:
加密后的字符串为:
BBBcccDDDeeefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz....
我怎么解决这个!?
最佳答案
如果没有更多的输入要扫描,
scanf("%c", &_char);
不修改 _char
。你必须检查扫描的返回值,
if (scanf("%c",&_char) < 1) break;
然后退出循环。
关于c - C中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10260579/