Мой argv [] в main всегда возвращает 0 при преобразовании в целое число

#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]!='\0')
{
if (isalpha(text[i]))
text[i]=(text[i] + key ) %26;
i+=1;
}
cout<<text;  //some garbage
}

Командная строка arg:

 .\"walkthrough week1".exe 2

Я сделал это впервые, поэтому я не понимаю ошибки. Куда я иду не так?

-5

Решение

argv это указатель на char * который содержит аргументы программы.

*argv равно argv[0] который является первым аргументом, именем программы. Вы на самом деле хотите аргумент argv[1] быть переданным atoi, но вы также должны проверить, был ли передан аргумент:

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

int key = atoi(argv[1]);

Также стоит отметить, что было бы лучше использовать strtol вместо atoi так как он имеет лучшую обработку ошибок.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]