我在 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
会更好,因为它有更好的错误处理。
#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
会更好,因为它有更好的错误处理。