程序忽略 `if ( argc != 2)` 语句

Program ignores `if ( argc != 2)` statement

我正在做 CS50 课程中的问题集,在这个问题中 argc 需要是 2。我做的是:

#include <cs50.h>
#include <stdio.h>
int main (int argc, string argv [])
{
    if ( argc != 2){
        printf ("Retry\n");
        return 1;
    } else {
        int x = atoi(argv [1]);
        string a = get_string ("Enter plaintext: ");
        printf ("%s", a);
        printf ("%d", x);
        }
}

但即使 argc 与 2 不同,它也会忽略 if 语句并转到 else 语句。

这是为什么?我该如何解决?

很确定您忘记了命令本身算作 shell 中的参数之一。换句话说:

> myprog myparam myotherparam

有 argc == 3 因为 myprog 是 arg[0]