#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
Я сделал это впервые, поэтому я не понимаю ошибки. Куда я иду не так?
argv
это указатель на char *
который содержит аргументы программы.
*argv
равно argv[0]
который является первым аргументом, именем программы. Вы на самом деле хотите аргумент argv[1]
быть переданным atoi
, но вы также должны проверить, был ли передан аргумент:
if(argc != 2)
{
//print usage
return 0;
}
int key = atoi(argv[1]);
Также стоит отметить, что было бы лучше использовать strtol
вместо atoi
так как он имеет лучшую обработку ошибок.
Других решений пока нет …