Как вызвать значение одной функции из другой функции в C? - PullRequest
0 голосов
/ 07 мая 2020

Как вызвать new_a cc name и address в функцию view_list . Я хочу показать имя и адрес для печати в функции view_list ?

#include <stdio.h>
#include <stdlib.h>
#define MAX 15

int new_acc();
int view_list();    
int main(){
    int one=1, two=2, three=3, four=4, five=5, six=6, seven=7, new_account, list; char choice[MAX];

    printf("%d. Create new account\n",one);
    printf("%d. View customers list\n",two);

    printf("Enter you choice: ");
    fgets(choice, MAX, stdin);
    if (choice[0]-'0'==one){new_account = new_acc();}
    else if(choice[0]-'0'==six){list = view_list();}
    else{printf("This is wrong");}
    return 0;}

int new_acc(){
    char name[15], address[30];  
    printf("Enter your name: ");
    fgets(name, sizeof name, stdin);

    printf("Enter your Address: ");
    fgets(address, sizeof address, stdin);
    return 0;}

int view_list(){
    printf("Here is your name: %d",name);
    printf("Here is your name: %d",address);
    return 0;}

1 Ответ

0 голосов
/ 07 мая 2020

Похоже, вы только что начали изучать язык C.

Это очень базовая c концепция языка C (или любого языка программирования, поддерживающего функциональную парадигму), которую имеет каждая функция. свое собственное пространство.

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

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

/**
 * This is the functional approach.
 *
 * Since name and address were arrays so, we need pointers to supply them here.
 * and in the `printf()` I used "%s", it is used to print strings. "%d" prints
 * integers, numbers only 
 */
int view_list(char* name, char* address) {
    printf("Here is your name: %s", name);
    printf("Here is your name: %s", address);
    return 0;
}

/**
 * This is the procedural approach.
 */

char name[15], address[30];

int new_acc() {
    // Instead of declaring them here.
    // declare them in globally.
    //
    // char name[15], address[30];
    printf("Enter your name: ");
    fgets(name, sizeof name, stdin);

    printf("Enter your Address: ");
    fgets(address, sizeof address, stdin);
    return 0;
}
int view_list() {
    printf("Here is your name: %s", name);
    printf("Here is your name: %s", address);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...