将一个字符串复制到其他使用指针生成垃圾值为什么?

时间:2015-04-09 19:46:31

标签: c

如果采取数组它会没事,但因为我使用* str1和str2它不起作用

#include <stdio.h> 

void copystr(char* ,char*);

int main() 
{ 
    char *str1="xxx";
    char *str2= "yyy";

    copystr(str1, str2); 
    printf("\n %s",str2); 
 }
 void copystr(char *dest,char *src) 
 { 
     while(*src!='\0') 
         *dest++=*src++; 
     *dest='\0'; 
     return; 
 } 

2 个答案:

答案 0 :(得分:1)

char *str = "some string"

这里str是一个指向常量内存的指针,它不能被编辑并导致未定义的行为。

但如果你宣布像

那样
char str2[] = "some string"

现在上面的str2指向一个非常量且可以更改的内存。这样就行了。

此处有更多解释: char *array and char array[]

答案 1 :(得分:0)

目标字符串str1是字符串文字。字符串文字是不可修改的。任何修改它的尝试都将调用undefined behavior