Как вернуть значение int в C? - PullRequest
0 голосов
/ 19 мая 2019

Я новичок в C языке и пытаюсь создать простую программу для возврата имени и возраста. Я создал рабочую функцию для возврата имени, но это не работает для возврата целого.

Код, который у меня сейчас есть:

int * GetAge(){  
  int Age;

  printf("What is your age: ");
  scanf(" %d", &Age);

  int * returnedage = Age;

  return returnedage;
}

Это GetName ():

char * GetName(){
  char Name[31];

  printf("What is your name: ");
  scanf("%s", Name);

  char * returnedname = Name;

  return returnedname;
}

Предупреждение в этой строке:

int * returnedage = Age;

Там написано:

incompatible integer to pointer conversion
initializing 'int *' with an expression of type 'int'; take
the address with &

Я пытался:

int * returnedage * Age;
int * returnedage & Age;
//for strcpy I set the function as a char
char * returnedage;
strcpy(Age, returnedage);

Ни одна из этих работ.

Я хочу просто получить имя и возраст, тогда в основном я печатаю имя и возраст:

printf("Your name is %s and your age is %d", GetName(), *GetAge());

Нет ошибок.

Итак, мой ожидаемый результат:

What is your name: Ethan
What is your age: 13
Your name is Ethan and your age is 13

Что я на самом деле получаю:

What is your name: ethan
What is your age: 13
exit status -1

Скажите, пожалуйста, есть ли для этого базовое решение?

Ответы [ 2 ]

1 голос
/ 19 мая 2019

Измените свой код на это:

int GetAge()
{  
  int Age;

  printf("What is your age: ");
  scanf(" %d", &Age);

  return Age;
}

На основной (Удалить * на GetAge ()):

printf("Your name is %s and your age is %d", GetName(), GetAge());

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

Отредактировано: Измените свой GetName () на:

void GetName(char *name){

  printf("What is your name: ");
  scanf("%s", name);
}

Теперь наmain:

char name[31];
GetName(name);
printf("Your name is %s and your age is %d", name, GetAge());

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

0 голосов
/ 19 мая 2019

Попробуйте:

int GetAge()
{ 
    int Age;
    printf("What is your age: ");
    if (scanf("%d", &Age) != 1)
        return -1;  // return an error code if an integer couldn't be read
    return Age;
}

Теперь вызовите функцию, используя GetAge().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...