2013-02-02 3 views
0

Я новичок в C, и до сих пор очень, совсем. Тем не менее, я пытаюсь вызвать функцию из основной функции с помощью scanf и оператора switch, но я не верю, что функция, которую я вызываю, работает.Вызов функции в C, не производящей функции

int main(void) 
{ 
    int Example_number = 0; 
    bool Continue = true; 
    char ch; 

    while(Continue) 
    { 
     printf("Which example would you like to run?\n"); 
     scanf("%d",&Example_number); 

     switch(Example_number) 
     { 
     default: printf("No such program exists.\n"); 
       break; 
     case 1: void Various_test(); 
       break; 
     } 

     printf("Would you like to test another?(Y/N)\n"); 
     scanf("\n%c",&ch); 
     if(ch == 'Y' || ch == 'y') 
     { 
      NULL; 
     } 
     else 
     { 
      Continue = false; 
     } 
    } 
} 

void Various_test(void) 
{ 
    int k = 2; 
    printf("\n%d",k); 
} 

Я надеюсь на программу для вывода на печать 2, если 1 является входом, однако цикл в то время как только повторяется.

Благодарим вас за рассмотрение этого вопроса.

ответ

4

void Various_test() - это прямое декларацирование функции. Чтобы назвать это, вы действительно просто хотите Various_test(). На самом деле вам может понадобиться декларация вперед (в зависимости от ваших параметров компиляции). В этом случае поставьте void Various_test(); выше main.

+0

Без пустоты перед Various_test(); Я получаю сообщение об ошибке «Идентификатор не найден». И как только я поставил его над основной функцией, он все равно не печатал. EDIT: На самом деле после его перемещения, а затем удаления пустоты он работал! Благодаря!! – Trevor

1

Вы можете сделать одну из двух вещей:

Добавить объявление функции в начале основной, как это:

int main(void) 
{ 
    void Various_test(void); 
    ... 

Или переместить определение функции в Various_test как раз перед основным, как это:

void Various_test(void) 
{ 
    int k = 2; 
    printf("\n%d",k); 
} 

int main(void) 
{ 
    int Example_number = 0; 
    ... 

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

Одна вещь, вы вызываете Various_test неправильно в вашем заявлении переключатель:

case 1: void Various_test(); 

Должно быть:

case 1: Various_test(); 
Смежные вопросы