打印

两个char *字符串的连接问题请教?

两个char *字符串的连接问题请教?

目的:连接两个字符串入dest中
代码:
#include <stdio.h>
#include <string.h>
void main()
{
        char *dest = "ly";
        char *src = "d";
        for(;*dest;dest++)
                for(;*src;src++)
                        *dest++=*src;
        printf("%s",dest);
}

在VC下编译可以,运行出错?

TOP

哦,上面我好象写错了:
void main()
{
char *dest = "ly";
char *src = "d";
char *tmp = dest;
for(;*dest;dest++)
for(;*src;src++)
*dest++=*src;
     *dest = 0;
printf("%s",tmp);
}

TOP

我又试了一下拷贝问题:
#include <stdio.h>
#include <string.h>

void copy_string(char *src,char *dest)
{
        for(;*src != '\0';src++,dest++)
                *dest = *src;
        *dest = '\0';
}

void main()
{
        char *a = "y";
        char *b = "y";
        copy_string(a,b);
        printf("%s\n,%s\n",a,b);
}
以TC下可以,在VC6.0下不行。
请问这是什么原因?

TOP

看不懂你的逻辑,并且本身这个写法就是不正确的,没有内存临界检查很有可能会造成缓冲区溢出。
字符串连接可以使用strcat,注意目标string必须有足够大的内存。
比如
char* dest = (char*)malloc(sizeof(char)*1024); // here we allocate 1024 byte to the string
strcpy ( dest, "hello " ); // so at here, dest was allocated for 1024 bytes, but only used 7 bytes: h,e,l,l,o,<space>,</0>
char* src = "world!" ; // src has 7 bytes: w,o,r,l,d,!,</0>
if ( strlen(dest)+strlen(src)+1 <= 1024 ) // check if 1024 byte is enough for the whole string, remember to add 1 for </0>
{
dest = strcat ( dest, src ); // concat the 2 strings
}
else
{
return ENOMEM ;
}

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-8-21 06:23 京ICP证060528 号

Designed By 17DST