Возникли проблемы с указателями на символы - PullRequest
0 голосов
/ 01 июня 2018

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

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

void store_stuff(char *name, int *age);
int main(void) {

    char *name;
    int age;

    store_stuff(&name, &age); // I'm having trouble here

    printf("Name: %s\n", name);
    printf("Age: %d\n", age);

}

void store_stuff(char **name, int *age) {

    *name = "John";
    *age = 31;

}

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

https://ideone.com/5HOPGQ

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

char *store_stuff(char **name, int *age);
int main(void) {

    char *name;
    int age;

    store_stuff(&name, &age); // I'm having trouble here

    printf("Name: %s\n", name);
    printf("Age: %d\n", age);

}

char *store_stuff(char **name, int *age) {

    *name = "John";
    *age = 31;
    return *name;
}
0 голосов
/ 01 июня 2018

Сделать это

void store_stuff(char** name, int* age)
{
    *name = "John";
    *age = 31;
}

Вам нужен этот указатель на указатель для назначения имени, чтобы выбраться из store_stuff

Также вам нужно изменить определение

char name

до

char* name

Поскольку name сам хочет быть указателем для взаимодействия в виде строки

РЕДАКТИРОВАТЬ: Иконечно, убедитесь, что ваш прототип соответствует на вершине с void store_stuff(char** name, int* age);

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