2016-03-10 3 views
0

Я начинаю кодирование на этой неделе, поэтому я нелюбовь об этом. Мне нужна помощь по возврату на главную в моем скрипте. Например, когда я сделал регистрацию курса часть я не могу вернуться в меню программы происходит сбойФункция возврата в главном меню в c

коды:

#include <stdafx.h> 
#include <stdio.h> 

void eng(); 
void menu(); 
void huh(); 

int main() 
{ 
    menu(); 

    return 0; 
} 

void menu() 
{ 
    int menu1choice; 

    printf("Menu\n"); 
    printf("\n"); 
    printf("1. Student Registration\n"); 
    printf("2. Show Students.\n"); 
    printf("Please enter number: "); 
    scanf_s("%d", &menu1choice); 
    switch (menu1choice) 
    { 
     case 1: 
     { 
      eng(); 
      break; 
     } 

    } 
} 

void eng() 
{ 
    int a = 5; 
    char name[30]; 

    printf("1.Student Number: "); 
    scanf_s("%d", &a); 
    //student number 
    printf("2.Name: "); 
    scanf_s("%s", &name); 
    //student name 
    getchar(); 
} 

void huh() 
{ 
    int a = 5; 
    char name[30]; 

    printf("Your Student number: %d\n", a); 
    printf("Your Name: %s\n", name); 
    //result 
    getchar(); 
} 

Pls помочь мне написать код возврата строки, спасибо заранее

+1

Вы вызывается * Неопределенное поведение * для использования неопределенного значения неинициализированной переменной, имеющей автоматический срок хранения в 'Е («Ваше имя:% s \ п», имя);' – MikeCAT

+0

Привет, Добро пожаловать в Stack Overflow, Это всего лишь сообщение, которое я посылаю новым членам, чтобы немного помогать. Кривая обучения для нового пользователя не крутая как таковая, но выяснение того, как использовать стек, не всегда очевидно. Пожалуйста, займите несколько минут и посмотрите здесь [ask], и также важно посмотреть здесь .. [mcve] .. Также, если ответ действительно для вас, нажмите на галочку слева от ответа, чтобы вопрос отмечен как ответ, и это гарантирует, что человек, который разместил его, получает репутацию. Приветствия. –

+1

'scanf_s ("% s ", &name);' -> 'scanf_s ("% 29s ", name, 30);' (30 <=> sizeof (name)) – BLUEPIXY

ответ

0

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

Что касается некоторых советов, ознакомьтесь с магическими номерами и, в частности, почему они плохие.

/* 
* 35917794_main.c 
*/ 

#include <stdio.h> 

#define  STU_REG   1 
#define  STU_SHOW  2 
#define  EXIT_SUCCESS 0 

unsigned int show_menu(void); 

unsigned int main 
     (
     unsigned int argc, 
     unsigned char *arg[] 
     ) 
{ 
    unsigned int menu1choice; 
/* 
* The next statements says run the function show_menu() and put the returned 
* result in the variable menu1choice. 
*/ 
    menu1choice = show_menu(); 
    switch(menu1choice) 
     { 
     case (STU_REG): 
      { 
      printf("\nGo do STUDENT REGISTRATION things...\n\n"); 
      break; 
      } 
     case STU_SHOW: 
      { 
      printf("\nGo do SHOW STUDENT things...\n\n"); 
      break; 
      } 
     default: 
      { 
      printf("\nGo do something for invalid option...\n\n"); 
      break; 
      } 
     } 
    return(EXIT_SUCCESS); 
} 


unsigned int show_menu 
     (
     void 
     ) 
{ 
    unsigned int ui_W0; 
    printf("Menu\n\n"); 
    printf("1. Student Registration\n"); 
    printf("2. Show Students.\n"); 
    printf("Please enter number: "); 
    scanf("%d", &ui_W0); 
/* 
* The next statements says run the function show_menu() has finished and returned 
* returns the result in the variable ui_W0. 
*/ 
    return(ui_W0); 
} 
Смежные вопросы