gcc 4.4.2 c89
Я просто работал над некоторыми указателями. Тем не менее, с помощью программы ниже я не могу заставить ее скопировать источник в место назначения. Даже когда я пытаюсь печатать в цикле for, я могу отображать символы в источнике, но dest пуст. Когда указатель возвращается, место назначения пусто. Так что он ничего не скопировал.
Я занимался этой проблемой около часа, и мне просто не понятно, почему она не работает.
Есть предложения?
Большое спасибо,
char str_source[80] = "A string to be for demostration purposes";
char str_dest[80] = {0};
char *my_strncpy(char *dest, const char const *source, const size_t size)
{
size_t i = 0;
printf("size [ %d ]\n", size);
for(i = 0; i < size; i++)
{
printf("i [ %d ]\n", i);
*dest++ = *source++;
printf("*source++ [ %c ]\n", *source);
printf("*dest [ %c ]\n", *dest);
}
/* Null terminate */
*dest++ = '\0';
return dest;
}
===============
EDIT
char str_source[80] = "A string to be for demostration purposes";
char str_dest[80] = {0};
printf("str_dest [ %s ]\n", my_strncpy(str_dest, str_source, sizeof(str_dest)));
char *my_strncpy(char *dest, const char const *source, const size_t size)
{
size_t i = 0;
/*
* increment p and return the dest which will be
* the beginning of the array.
*/
char *p = dest;
/* Copy the specified amount (normally the max size of dest - 1) */
for(i = 0; i < size; i++)
{
/* Ensure that the source is not overrun. */
if(*source)
*p++ = *source++;
}
/* Null terminate */
*p++ = '\0';
return dest;
}