Мой argv [] в main всегда возвращает 0 при преобразовании в целое число - PullRequest
0 голосов
/ 11 декабря 2018
#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

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

1 Ответ

0 голосов
/ 11 декабря 2018

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

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

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

int key = atoi(argv[1]);

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

...