НЕ МОЖЕТ копировать 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() и т. Д.