该程序旨在将 rot13 应用于输入。但是,当我编译时,我收到警告,第 20、23、29 行对代码没有影响,第 17 行是无法访问的代码。当输入任何内容时,它只会继续程序并留下一个空白区域。怎么了?
int main()
{
int c;
while ( ( c = getchar() ) != EOF )
putchar( r13( c ) );
return 0;
}
int r13(int c)
{
if(( tolower( c ) >='a' && c <='z'))
{
if((c) < 'm')
(c = c + 13);
else
{
(c = c - 13);
}
}
else
c = c;
return ( isalpha( c ) );
}
编辑:我愚蠢地把 return 放在那里而没有注意到,这修复了无法访问的错误。但是我仍然不知道为什么 c+13 和 c-13 没有效果?
编辑:我想用 C 创建一个程序,它是一个 rot13 编码器/解码器。这是原始代码,工作正常。但是我想转换为模数设计,我缺乏知识导致我失败了。希望这可以帮助人们理解我想要做什么。
int main(void)
{
int c,e;
while((c=getchar())!=EOF)
{
if(c >='A' && c <='Z')
{
if((e = c + ROT) <= 'Z')
putchar(e);
else
{
e = c - ROT;
putchar(e);
}
}
else if(c >='a' && c <='z')
{
if((e= c + ROT) <= 'z')
putchar(e);
else
{
e = c - ROT;
putchar(e);
}
}
else
putchar(c);
}
return 0;
}
编辑:好的,终于修复了,这么多愚蠢的错误,谢谢你的帮助。此外,程序应询问用户是否希望输入另一个值,如果是,则重复该过程。有很多方法可以做到这一点,只是想知道你们认为最好的方法是什么。