2013-11-21 5 views
0

Я не могу найти неисправную ссылку на этот кусок кода:Отсутствует аргумент? C-программирование

#include "queue.h" 

int pause(){ 
    return 1; 
} 

void add_to_queue(person p){ 

    if(full() != 1){ 

     printf ("\nAnge förnamn:"); 
     scanf ("%c", p.first_name); 
     printf ("\nAnge efternamn:"); 
     scanf ("%c", p.sure_name); 
     printf ("\nAnge person nummer:"); 
     scanf ("%c", p.pers_nbr); 
     enqueue(p); 
    } 
    else{ 
     printf ("\nKön är full!"); 
    } 
} 

void show_menu(){ 
    printf ("\n**** Meny ****\n"); 
    printf ("1. Lägg till personer i kön\n"); 
    printf ("2. Ta bort personer ur kön\n"); 
    printf ("3. Skriv ut kön\n"); 
    printf ("4. Avsluta\n\n"); 
} 

int get_selection(){ 
     int selection; 
     do{ 
       printf ("Ange ett alternativ 1-4: "); 
       scanf ("%d", &selection); 

       if (selection >= 1 && selection >= 4){ 
        printf ("\nFel"); 
       } 

     }while (selection < 1 && selection < 4); 

     return selection; 
} 

void run_selection(int selection){ 
     switch (selection){ 
      case 1 :add_to_queue(); <------- THIS IS WHERE THE PROBLEM IS! 
       break; 

      case 2 ://remove_from_queue(); 
       break; 

      case 3 ://print_queue(); 
       break; 

      case 4 : exit(0); 
       break; 

     default: 
      printf("Ogiltigt val! Tryck enter och välj ett alternativ mellan 1-4"); 
      break; 
    } 
} 

это дает мне ошибку:

menu.c:49:10: error: too few arguments to function ‘add_to_queue’ 

, но я не могу понять, какой аргумент он должен быть здесь? Пробовал add_to_queue(p) и add_to_queue(person p) и все .... ПОМОЩЬ !!!!

+0

Не относится к проблеме, о которой вы спрашиваете, но функции, которые не принимают аргументов, должны быть определены с помощью '(void)', а не '()'. Пустые круглые скобки представляют собой устаревшую форму, которая не дает вам никакой проверки времени компиляции. –

ответ

1

В определении функции add_to_queue() указан параметр типа person. Вы должны передать аргумент типа person в add_to_queue() в функции return_selection.
Или изменить

void add_to_queue(person p){...} 

в

void add_to_queue(void){...} 
+1

Или, может быть, 'void add_to_queue() {person p; //} ' – P0W

+0

@ P0W; Да. Добавление к ответу. – haccks

1

Из определения add_to_queue

void add_to_queue(person p); 

в верхней части кода функции требуется переменная типа "лицо". Вы должны создать его и перейти к функции.

0
  1. Сначала объявить person p.
  2. add_to_queue(p);
  3. Я предполагаю, что вы объявили структуру person в заголовок, который вы включили.
Смежные вопросы