Прочитайте и покажите имя и возраст, используя указатели в качестве параметров функции - PullRequest
0 голосов
/ 03 марта 2019

Я хочу написать функцию для чтения имени и возраста кого-либо и функцию для отображения его после использования указателей в качестве параметров.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void read(char **name, int *age)
{
  printf("name: ");
  scanf("%s", *name);
  printf("age: ");
  scanf("%d", age);
}

void write(char *name, int age)
{
  printf("%s, %d\n", name, age);
}

int main(void)
{
  char *name;
  int age;
  read(&name, &age);
  write(name, age);
  free(name);
  return 0;
}

Когда я запускаю это, я получаю сообщение об ошибке: Process terminated with status -1073741819 (0 minute(s), 2 second(s)).Это потому, что я не выделил никакой памяти для name?Не могли бы вы объяснить, что я делаю не так?

1 Ответ

0 голосов
/ 03 марта 2019

Вы не выделяете name, что приводит к сбою приложения, поскольку scanf, вероятно, вызывает нарушение прав доступа, пытаясь записать память вне пространства приложения.

Вам потребуетсялибо malloc некоторое пространство:

char *name = (char*) malloc(sizeof(char) * 256);

Или выделите некоторое место в стеке (и удалите вызов к free(name) в конце):

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