Как назначить содержимое, на которое указатель указывает на массив? - PullRequest
2 голосов
/ 10 декабря 2011

У меня есть указатель на символ, указывающий на адрес памяти, и мне нужно получить содержимое этого адреса и поместить его в массив символов?

char *msg;

char cntnt[10]; 

msg указывает на "майк", и мне нужно поместить эту строку в cntnt[10].

Мне так нравится

*cntnt = *msg;

когда я делаю это, cntnt получает только одну букву 'm'.

пожалуйста, помогите ....

Ответы [ 4 ]

3 голосов
/ 10 декабря 2011

Попробуйте использовать strcpy или memcpy.

len = strlen(msg);
if (len >= sizeof(cntnt))
    /* Bail out, not enough space. */

memcpy(cntnt, msg, len);
cntnt[len] = 0;
3 голосов
/ 10 декабря 2011

Использовать strcpy:

strcpy(cntnt, msg);
0 голосов
/ 10 декабря 2011

указатели и массивы не равны.Они похожи только в некоторых отношениях.Итак, после вашего кода вы изменили только один элемент вашего массива.

Если вы хотите изменить место, где локализуется cntnt, вы должны написать

cntnt = msg;

Если вы хотите скопировать содержимое последовательности символов в массив, используйте strcpy, как сказал Тудор.Вот хорошее объяснение предмета: http://c -faq.com / ~ scs / cclass / notes / sx8.html

0 голосов
/ 10 декабря 2011

Используйте memcpy, чтобы скопировать n количество байтов из этого указателя в массив:

char cntnt[10];
memcpy(cntnt, msg, 9);

рекомендуется использовать strcpy, только если у вас есть строка памяти с нулевой завершающей строкой, указанная указателем msg.

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