泸沽湖

从BUG中学习

0
阅读(1922)

下面这段代码是从网上找到的,但是编译运行的时候发现问题了。

因为char str1[]初始化字符长度比char str2[]长,如果从str1拷贝到str2,肯定有问题的哦。应该有内存溢出的问题。

 

#include "stdio.h"

main()

{

    char *ch(char *,char *);

    char str1[]="I am glad to meet you!";  

    char str2[]="Welcom to study C!"; 

    printf("%s",ch(str1,str2));

}

char *ch(char *str1,char *str2)

{

    int i;

    char *p;

    p=str2
   
    if(*str2==NULL) exit(-1);

    do

    {

        *str2=*str1;

        str1++;

        str2++;

    }while(*str1!=NULL);

    return(p);

}