НЕ МОЖЕТ копировать char в последний адрес char* (строка)?

Я хотел бы скопировать данные char* на другой последний адрес char*

иллюстрация

var1 -> O
var2 -> K

первый шаг

var1 -> OK
var2 -> K

копия var2 в var1

результат

var1 -> OK

письменный код

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

void timpah(char *dest, char *src, int l_dest, int l_src)
{
    int i = 0;
    while(i < l_dest)
    {
        dest[l_dest+i] = src[l_src+i];
    i++;
    }
}

int main()
{

char res[2024];
res[1] = 0x4f;

char a[] = {0x4b};


timpah(res,a,1,1);

printf("%s [%d]\n",res,strlen(res));
return 0;
}

бежать

root@xxx:/tmp# gcc -o a a.c
root@xxx:/tmp# ./a
 [0]

вопрос

почему мой код не работает? или уже есть какая-то функция для их выполнения, но я еще не знаю?

спасибо за любое внимание

3 ответа

Решение

Вы не устанавливаете res[0] в любой точке. Если res[0] содержит \0 ваша строка заканчивается там. Вы, вероятно, делаете вещи сложнее, чем они должны быть; вы всегда можете использовать strncpy а также strncat,

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

void timpah(char *dest, char *src, int l_dest, int l_src)
{
    int i = 0;
    while(i < l_dest)
    {
        dest[l_dest+i] = src[l_src+i];
    i++;
    }
}

int main()
{

char res[2024];
res[0] = 0x4f;


char a[] = {0x4b};


timpah(res,a,1,0);

res[2] = '\0';
printf("%s [%d]\n",res,strlen(res));
return 0;
}

Вы, вероятно, должны взглянуть на strncat(), strncpy() и т. Д.

Другие вопросы по тегам