我在 main 中的 argv[] 在转换为整数时总是 returns 0

My argv[] in main always returns 0 when converted to integer

#include<bits/stdc++.h>
#include<ctype.h>
using namespace std;
int main(int argc, char* argv[])
{
    int key= atoi(*argv); //key=0, no matter what value I give
    cout<<key;
    cout<<"Enter text:";
    char text[100];
    cin>>text;
    int i=0;
    while(text[i]!='[=11=]')
    {
        if (isalpha(text[i]))
            text[i]=(text[i] + key ) %26;
        i+=1;
    } 
    cout<<text;  //some garbage
}

命令行参数:

 .\"walkthrough week1".exe 2

我是第一次这样做,所以我不明白错误。我哪里错了?

argv 是指向 char * 的指针,它包含程序的参数。

*argv 等于 argv[0] 这是第一个参数,程序名称。您实际上希望将参数 argv[1] 传递给 atoi,但您还应该检查参数是否已传递:

if(argc != 2)
{
    //print usage
    return 0;
}

int key = atoi(argv[1]);

还值得一提的是,使用 strtol 而不是 atoi 会更好,因为它有更好的错误处理。