【问题标题】:copy one string in to other using pointer produce Garbage values why?使用指针将一个字符串复制到另一个字符串会产生垃圾值,为什么?
【发布时间】:2015-06-15 08:31:06
【问题描述】:

如果采用数组,它会很好,但因为我使用 *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; 
 } 

【问题讨论】:

    标签: c


    【解决方案1】:
    char *str = "some string"
    

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

    但是如果你声明喜欢

    char str2[] = "some string"
    

    现在上面的 str2 指向的内存不是恒定的,可以更改。这样就可以了。

    这里有更多解释: char *array and char array[]

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-26
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多