【发布时间】:2015-11-16 00:44:21
【问题描述】:
有人可以帮忙吗?我是编程和学习 cs50 课程的新手。任务是根据代码字对纯文本进行加扰。语言是 C 和 linux。
我似乎一切正常,但在过去的 2 个小时里,我一直在努力解决编译程序时出现的最后一个错误。我遇到的问题是程序的下半部分(在 //Cipher 功能位之后)
这是错误:
viginere.c:39:5: error: expected expression
else
^
viginere.c:44:5: error: expected expression
else
^
2 errors generated.
我看不出我做错了什么。
我在几个不同的地方弄乱了 {},但我认为这不是问题,因为这个程序是我之前制作的一个程序的修改版本,并且它可以工作,具有相同的布局(只是不同略有不同 printf) 我错过了什么?
这是我的代码:
int main (int argc, string argv[])
{
//change command line string to a number
int k = atoi(argv[1]);
string v = argv[1];
//check program command line was typed correctly
if (argc != 2 || k != 0)
{
printf("Restart program with keyword in command line (alphabetical characters only)\n");
return 1;
}
//Get Plain Text
printf("The keyword is set to %s.\nType in your plain text: ", argv[1]);
string s = GetString();
//Print Cipher
printf("Your cipher text = ");
//Set variables for mudulo on keyword
int codecount = strlen(argv[1]);
int c = 0;
//Cipher function (Errors are in this part)
for (int i = 0; i < strlen(s); i++)
{
//Cipher uppercase
if (isupper(s[i]))
printf("%c", (s[i] + v[c%codecount] - 65)%26 + 65);
c++;
//Else Cipher lowercase
else
if (islower(s[i]))
printf("%c", (s[i] + v[c%codecount] - 97)%26 + 97);
c++;
//Print all else as normal
else
printf("%c", s[i]);
}
printf("\n");
}
【问题讨论】:
-
if之后的多个语句需要大括号才能使else有效。此外,当他的名字拼写错误时,维热内尔很可能会在坟墓里上交。 -
你的 for 循环中缺少 if+else 语句的括号
-
非常感谢大家,结果我设法让它工作了。还将文件名更改为 Vigenere....
标签: c if-statement cs50 vigenere