错误的 if 语句(初学者)
Faulty if statement (beginner)
我在 cs50 edx 的第 2 周,尝试编译时不断出现以下错误:
caesar.c:23:7: error: expected expression if (isalpha(encryptme[p]) =
true){
^
这是我的代码:
#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);
}
)
}
看了一个多小时,搜索了一个多小时,请找出我这无疑是愚蠢的错误!
您需要 ==
而不是 =
。
前者是平等检验;后者是一个作业。
但是最好不要与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 的回答,因为那是首先检测 {
的 (
的地方。
你的 for 循环
for (int p = 0; p <= strlen(encryptme); p++)(
的语句包含在 ()
而不是 {}
中
我在 cs50 edx 的第 2 周,尝试编译时不断出现以下错误:
caesar.c:23:7: error: expected expression if (isalpha(encryptme[p]) = true){ ^
这是我的代码:
#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);
}
)
}
看了一个多小时,搜索了一个多小时,请找出我这无疑是愚蠢的错误!
您需要 ==
而不是 =
。
前者是平等检验;后者是一个作业。
但是最好不要与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 的回答,因为那是首先检测 {
的 (
的地方。
你的 for 循环
for (int p = 0; p <= strlen(encryptme); p++)(
的语句包含在 ()
而不是 {}