if语句错误(初学者)

时间:2017-02-03 04:45:30

标签: if-statement cs50

我在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);
      }
   )
}

盯着这个观察了一个多小时,搜索了一个多小时,请找到我无疑的愚蠢错误!

2 个答案:

答案 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++)(将其语句括在()而不是{}