我正在使用gedit而且我的编译器是clang。 我最近得到了几个这样的错误,不知道如何解决(标题错误和引用else语句)。
if(isupper(ptext[i]))
if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90)
{
printf("%c", (((ptext[i]+k)%26)+78));
}
else
{
printf("%c", (((ptext[i]+k)%26)+52));
}
我应该添加/删除/修复什么? 在此先感谢:)
答案 0 :(得分:7)
你的外if
缺少大括号:
if(isupper(ptext[i]))
{
if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90)
{
printf("%c", (((ptext[i]+k)%26)+78));
}
else
{
printf("%c", (((ptext[i]+k)%26)+52));
}
}
就个人而言,我会将一些常见元素提取到变量中:
char something1 = ptext[i];
if(isupper(something1))
{
char something2 = (something1+k)%26;
if ((something2+52) < 65 || (something2+52) > 90)
{
printf("%c", (something2+78));
}
else
{
printf("%c", (something2+52));
}
}
甚至可能在那里放一个char something3 = something2 + 52;
。当然,有更有意义的变量名。
答案 1 :(得分:6)
C与Python不同,它告诉什么属于缩进的内容。因为在C中,所有空格都被忽略。
您需要使用大括号来告诉编译器if
所属的else
语句。
C编译器不知道,所以要求你指定:
这是吗? if(isupper(ptext[i]))
{
if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90)
{
printf("%c", (((ptext[i]+k)%26)+78));
}
else
{
printf("%c", (((ptext[i]+k)%26)+52));
}
}
还是这个?
if(isupper(ptext[i]))
{
if ((((ptext[i]+k)%26)+52) < 65 || (((ptext[i]+k)%26)+52) > 90)
{
printf("%c", (((ptext[i]+k)%26)+78));
}
}
else
{
printf("%c", (((ptext[i]+k)%26)+52));
}
这是一个“悬空”的例子。