2016-11-02 1 views
0

Je dois faire une affectation pour demain connecté avec des filtres. Je l'ai créé les fonctions que j'ai besoin, mais j'ai un problème avec ma fonction principale qui ressemble à ceci:La commande de commutation ne fonctionne pas

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; 
} 

Lorsque je tente de le compiler, une erreur apparaît « pp2.exe a cessé de fonctionner ». Pourriez-vous m'aider à résoudre ce problème. De plus, j'ai besoin d'utiliser ce programme depuis la ligne de commande pour filtrer certaines données. Ai-je correctement utilisé la commande switch? Est-ce que je pourrai changer de fonctions en travaillant en ligne de commande?

+1

Essayez 'switch (argv [1] [0] - '0')'. –

+2

Ou plus comme 'switch (atoi (argv [1]))' –

+0

Les deux fonctionnent. Cependant, ni l'un ni l'autre n'est optimal, car 'argv' est un argument de ligne de commande, mais vous demandez une entrée qui n'est pas' argv'. –

Répondre

0

Vous n'avez pas besoin de déréférencer l'argument indexé, en l'indexant, il déréférence la chaîne. *argv[1] doit être argv[1] - mais avant de pouvoir le changer, vous devez convertir cette chaîne en nombre entier.