memcpy подстрока - PullRequest
       6

memcpy подстрока

2 голосов
/ 26 ноября 2011

Я хотел бы попробовать функцию C memcpy .У меня есть этот код:

char destination[40];
memcpy(destination, "My favorite destination is...", 11);
printf(destination);

Я хотел бы скопировать первые 11 букв в массив назначения.Когда я использую printf, результат «Мой любимый2».Почему?

Ответы [ 4 ]

10 голосов
/ 26 ноября 2011

Вам не хватает терминатора NULL в конце 11 символов -> Printf просто печатает все, что находится в этой части памяти, пока не найдет терминатор NULL.

Просто добавьте в пункт назначения [11] = 0;

Это должно работать:)

3 голосов
/ 26 ноября 2011

C строки должны заканчиваться нулем. Самое простое решение - сначала скопировать нули во всю строку.

memset(destination, 0, sizeof(destination));
3 голосов
/ 26 ноября 2011

Это потому, что memcpy не завершает строку нулевым байтом.Вы можете начать с заполнения всего массива нулями:

memset(destination, 0, sizeof destination);
0 голосов
/ 26 ноября 2011
printf("%.11s","My favorite destination is...");
...