0

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]

質問

なぜ私のコードが機能しないのですか?または、これらを実行するための機能がすでに存在していましたが、私はまだそれを知りませんか?

どんな注意のためのthx

4

3 に答える 3

4

res[0]どの時点でも設定していません。res[0]が含まれている場合\0、文字列はそこで終了します。あなたはおそらく物事を必要以上に難しくしているでしょう。strncpyいつでも使用できますstrncat

于 2011-05-27T08:01:28.167 に答える
0

おそらくstrncat()、strncpy()などを見てください。

于 2011-05-27T08:02:53.057 に答える
0
#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;
}
于 2011-05-27T08:13:19.400 に答える