我在cs50 edx的第2周,并在尝试编译时不断收到以下错误:
caesar.c:23:7:错误:预期表达式if(isalpha(encryptme [p])= 真正){ ^
这是我的代码:
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, string argv[])
{
if (argc !=2) {
printf("ERROR: Must pass exactly two command line arguments!\n");
return 1;}
string num = argv[1];
int i = atoi(num);
printf("plaintext: ");
string encryptme = get_string();
printf("cyptertext: ");
for (int p = 0; p <= strlen(encryptme); p++)(
if ( isalpha(encryptme[p]) = true){
printf("%c",encryptme[p]+i%26);
}
)
}
盯着这个观察了一个多小时,搜索了一个多小时,请找到我无疑的愚蠢错误!
答案 0 :(得分:1)
您需要==
而不是=
。
前者是平等考试;后者是一项任务。
最好不要与true
进行比较。最好只是说
if (isalpha(encryptme[p]))
另外,请注意在C中使用true
。在所有版本的C中都不支持。我不确定cs50.h
中的内容。也许true
在那里,也许不在......
我这样做:
for (int p = 0; p <= strlen(encryptme); p++) {
if (isalpha(encryptme[p])) {
printf("%c", encryptme[p] + i % 26);
}
}
清理了一些间距和缩进更为传统。 (此外,你应该接受jdow的答案,因为那是(
{
的{{1}}首先被发现的地方。
答案 1 :(得分:0)
你的循环
for (int p = 0; p <= strlen(encryptme); p++)(
将其语句括在()
而不是{}