Взять вывод функции и поместить его в другую функцию в C - PullRequest
1 голос
/ 16 апреля 2020

Итак, я пытаюсь поместить вывод одной функции и поместить его в другую функцию

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

int guess(int a, int b){
    printf("\nEnter you guess: ");
    scanf("%d,%d", &a, &b);
    return a, b;
}

int check(int a, int b){
    printf("%d %d ",a,b);
}

А вот код:

#include <stdio.h>

int main(){
    int row, column;
    guess(row, column);
    check(row, column);
}

int guess(int a, int b){
    printf("\nEnter you guess: ");
    scanf("%d,%d", &a, &b);
    return a, b;
}

int check(int a, int b){
    printf("%d %d ",a,b);
}

Я пытался выразить это просто, чтобы понять, как сделать это более четко.

Когда я запускаю код и ставлю координаты, например: 4,5, и он только печатает 0 1

Также, возможно ли это сделать с массивами ?

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Числа ввода, которые вы читаете в функциях guess, фактически считываются только в локальные переменные a и b. Вам нужно будет передать указатели, чтобы иметь возможность читать в переменные в main.

Также нет способа вернуть несколько значений из функции в C.

#include <stdio.h>

void guess(int *a, int *b)
{
    printf("\nEnter you guess: ");
    scanf("%d,%d", a, b);
}

int check(int a, int b)
{
    printf("%d %d " ,a, b);
}

int main()
{
    int row = 0, column = 0;
    guess(&row, &column);
    check(row, column);
}

Вам также следует проверить возвращаемое значение scanf на наличие сбоев.

1 голос
/ 16 апреля 2020

1) Вам необходимо использовать прототип или объявить свои функции вперед.

2) Вы не можете вернуть 2 переменные из функции в C, но вы можете передать массив и прочитать / записать его значения:

#include <stdio.h>

void guess(int arr[])
{
    printf("\nEnter you guess: ");
    scanf("%d,%d", &arr[0], &arr[1]);
}

void check(int arr[])
{
    printf("%d %d ",arr[0], arr[1]);
}

int main(void)
{
    int arr[2];

    guess(arr);
    check(arr);
    return 0;
}

или вы можете передать ссылку

void guess(int *a, int *b)
{
    printf("\nEnter you guess: ");
    scanf("%d,%d", a, b);
}

guess(&a, &b);
...