2010-04-28 2 views
0

Вот моя главная функция:Итерация через главную функцию в 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; 
} 

Единственная проблема с этим является то, что после перерывов саза, программа просто выходит из. Я понимаю, почему, но я не знаю, как это исправить. Я хочу, чтобы программа повторялась каждый раз даже после утверждений дела. Я бы сказал:

main(argc, argv); 

перед каждым заявлением о перерыве?

+1

не называйте основной перед каждым перерывом. Это приведет к выдуванию вашего стека (т. Е. Переполнение стека). Комментарий Кита ниже - хороший. – sblom

+0

Возможно, именно там они получили название этого сайта? –

ответ

2

завернуть его в то время как (1) {}

например

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

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

void GetUserInput() { 
    // switch 
} 

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

C не имеет ключевого слова «true» –

+2

@Keith Nicholas: C89/90 не позволяет объявлять переменные в середине кода. Поскольку OP делает это, они должны использовать C99. C99 имеет 'true', хотя это не ключевое слово, а макрос из' '. – AnT

+0

@AndreyT: Я не объявлял переменную в инструкции switch. Это C99. Переменные были объявлены в основной функции. –