НЕ МОЖЕТ копировать char в последний адрес char * (строка)? - PullRequest
0 голосов
/ 27 мая 2011

Я хотел бы скопировать данные 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 ]

4 голосов
/ 27 мая 2011

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

0 голосов
/ 27 мая 2011
#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;
}
0 голосов
/ 27 мая 2011

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

...