2010-04-28 10 views
0

Voici ma fonction principale:Itérer par la fonction principale dans C?

int main(int argc, char **argv) 
{ 
LoadFile(); 

Node *temp; 
char *key; 

switch (GetUserInput()) 
{ 
case 1: 

    temp = malloc(sizeof(Node)); 

    printf("\nEnter the key of the new node: "); 
    scanf("%s", temp->key); 

    printf("\nEnter the value of the new node: "); 
    scanf("%s", temp->value); 

    AddNode(temp); 
    free(temp); 
    break; 
case 2: 
    key = malloc(sizeof(char *)); 
    printf("Enter the key of the node you want to delete: "); 
    scanf("%s", key); 
    DeleteNode(key); 

    free(key); 
    break; 
case 3: 
    PrintAll(); 
    break; 
case 4: 
    SaveFile(); 
    break; 
case 5: 
    return 0; 
    break; 
default: 
    printf("\nWrong choice!\n"); 
    break; 
} 

return 0; 
} 

Le seul problème avec c'est que, après des pauses de déclaration de cas, le programme juste sort dehors. Je comprends pourquoi, mais je ne sais pas comment le réparer. Je veux que le programme se répète à chaque fois, même après les déclarations de cas. Est-ce que je dirais simplement:

main(argc, argv); 

avant chaque déclaration de rupture?

+1

ne pas appeler principal avant chaque pause. Cela finira par souffler votre pile (c'est-à-dire débordement de pile). Le commentaire de Keith ci-dessous est bon. – sblom

+0

peut-être que c'est là qu'ils ont obtenu le nom de ce site? –

Répondre

2

envelopper dans un certain temps (1) {}

par exemple

while(1) 
{ 
    //switch... etc down to the close of the switch 
} 
-1

Après avoir atteint un curriculum vitae de contrôle de l'instruction break à la fin de l'instruction switch, emballage de sorte que le commutateur entier dans un certain temps boucle va le faire répéter, mais je voudrais en faire une fonction distincte appelée à partir d'une boucle principale:

void GetUserInput() { 
    // switch 
} 

int main() 
{ 
    while (1) 
    GetUserInput(); 
    return 0; 
} 
+0

C n'a pas de mot-clé "vrai" –

+2

@Keith Nicholas: C89/90 ne permet pas non plus de déclarer des variables au milieu du code. Comme le PO le fait, ils doivent utiliser C99. C99 a 'true', bien que ce ne soit pas un mot-clé mais plutôt une macro de' '. – AnT

+0

@AndreyT: Je n'ai pas déclaré de variable dans l'instruction switch. C'EST C99. Les variables ont été déclarées dans la fonction principale. –

Questions connexes