2013-11-21 65 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类型的参数传递给return_selection函数中的add_to_queue()
或更改

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结构。