2016-11-02 4 views
0

Мне нужно выполнить назначение для подключения к фильтрам. Я создал функции, которые мне нужны, но у меня есть проблема с моей основной функцией, которая выглядит следующим образом:Команда переключателя не работает

int main (int argc, char *argv[]) 
{ 
    printf ("Select program: \n1-makeLower \n2-makeUpper \n3-makeChange"); 
    switch(*argv[1]) 
    { 
    case 1: 
    makeLower(); 
    break; 
    case 2: 
    makeUpper(); 
    break; 
    case 3; 
    makechange(); 
    break; 
    default; 
    printf ("Error"); 
    break; 
    } 
    return 0; 
} 

Когда я пытаюсь скомпилировать его, появляется сообщение об ошибке «pp2.exe перестал работать». Могли бы вы, ребята, помочь мне решить эту проблему. Кроме того, мне нужно использовать эту программу из командной строки для фильтрации некоторых данных. Я правильно использовал команду switch? Смогу ли я переключить beetwen функции во время работы в командной строке?

+1

Попробуйте 'switch (argv [1] [0] - '0')'. –

+2

Или больше как 'switch (atoi (argv [1]))' –

+0

Оба работают. Тем не менее, ни одно из них не является оптимальным, так как аргумент argv является аргументом командной строки, но вы запрашиваете ввод, который 'argv' не является. –

ответ

0

Вам не нужно разыменовывать индексированный аргумент, индексируя его разделение на строку. *argv[1] должен быть argv[1] - но прежде чем вы сможете его переключить, вам нужно преобразовать эту строку в целое число.

Смежные вопросы