Функции продолжают возвращаться 0 - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть три функции одна внутри другой, они используют те же входные данные, что и в моем коде, каждый раз, когда я печатаю входные данные после того, как передал три функции, я получаю «0» в качестве значения.

Я пытался удалить «free ()», так как я думал, что из-за этого мои входные данные получают 0 в качестве значений, но если я это сделаю, код зависнет.

int Timeout;
char passcode[20];

void configuration(int *d, char *c) {

  c = malloc(20 * sizeof(char));

  d = malloc(sizeof(int));

  *d = *d + 1;

  readn(d, c);

  free(c);

  free(d);

  return;
}

void readn(int *d, char *c) {

  c = malloc(20 * sizeof(char));

  d = malloc(sizeof(int));

  *d = *d + 2;

  configuration_SYS(d, c);

  free(c);

  free(d);

  return;
}

void configuration_SYS(int *d, char *c) {

  char *mdp = malloc(sizeof(20));
  mdp = "1234";

  c = malloc(20 * sizeof(char));
  d = malloc(sizeof(int));

  c = mdp;
  *d = *d + 3;


  free(mdp);

  return;
}

void main() {
  configuration(&Timeout, passcode);
  printf("%d\n", Timeout);

  for (int i = 0; i < 20; i++) {
    printf("%c", passcode[i]);
  }
}

Я ожидаю, чтополучить значения, отличные от 0, когда я печатаю две переменные.Тайм-аут должен равняться 6, а код доступа = "1234".

1 Ответ

0 голосов
/ 28 декабря 2018
  • Вам не нужно использовать malloc() каждый раз, когда вы используете указатель.malloc() выделяет место для вашего использования. ПРИМЕЧАНИЕ : это пространство не обязательно инициализируется (это означает, что данные могут иметь любое значение)
  • Нет необходимости в return; в конце функции void.Закрывающая скобка вернется к вам.
  • Вы вызываете configuration_SYS(char* abc, int* d, char* c) с двумя аргументами, но функция принимает три параметра.

Как таковая, я не могу скомпилировать эту программу.Я не уверен, почему он печатает 0 для вас.Я бы работал над созданием Минимально завершенного проверяемого примера

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