用指针和数组实现字符串复制
****************/
#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 为止,最后输出一个换行符。
*************************/