Итерировать через основную функцию в C? - PullRequest
0 голосов
/ 28 апреля 2010

Вот моя основная функция:

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

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

main(argc, argv);

перед каждым оператором разрыва?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

Оберните это через некоторое время

например

while(1)
{
  //switch... etc down to the close of the switch
}
0 голосов
/ 28 апреля 2010

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

void GetUserInput() {
  // switch
}

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