用指针和数组实现字符串复制

/****************
用指针和数组实现字符串复制

****************/

用指针和数组实现字符串复制

#include<stdio.h>
#define N 80

void MyStrcpy(char dstStr[],char srcStr[])        //使用字符串数组作为函数参数复制字符串
{
    int i = 0;
    while(srcStr[i]!= '\0')
    {
        dstStr[i] = srcStr[i];        //复制下标
        i++;        //右移下标
    }
    dstStr[i] = '\0';        //尾部加字符串结束标志
}

/*
void MyStrcpy(char *dstStr,char *srcStr)        //用字符指针作为函数参数,实现字符串复制
{
    while(*srcStr != '\0')        //若当前srcStr所指字符不是字符串结束标志,'\0' 是字符串的结束符,任何字符串之后都会自动加上'\0'。
    {
        *dstStr = *srcStr;        //复制字符串
        srcStr++;        //使srcStr指向下一个字符
        dstStr++;        //使dstStr指向下一个储存单元
    }
    *dstStr = '\0';        //在字符串dstStr尾部添加字符串结束标志

}
*/
int main()
{
    char a[N],b[N];
    printf("输入字符串:");
    gets(a);
    MyStrcpy(b,a);
    printf("复制后:");
    puts(b);
    return 0;
}

/********************
\0 为字符串结束符,比如说:
abcd (空格)cdefg;
存入数组时,空格作为一个字符占有一个字节的空间,我们可以把它看着一个字符去处理。而“\0 ” 则是这个字符串的结束标识符,也占有一个字节的空间,表示字符串结束!
char a[]={'a','b','c','d', ,'c','d','e','f','g','\0'}
'a''b'    'c''d'' ''c''d'f''g''\0'
附:如果用scanf来接收字符串的话,字符串中不能含有空格,否则将以空格作为串的结束符。如果你键入得是hello world 那么实际上scanf只能获取hello 这个单词。
所以要接收空格的话可以用gets()这个函数。gets(str)是读入一串以回车结束的字符,顺序存入到以str为首地址的内存单元中,最后写入字符串结束标志 “\0 “,

同样在输出字符串时要用puts(),输出时直到遇到 \0 为止,最后输出一个换行符。
*************************/