/* 在写代码之前,先弄清字符串和字符数组的区别。 ——其实他们没有任何区别,只是存放在内存中的一样到数,是字符串还是字符数组,完全是由我们去看待的!
那 ‘\0’呢? 这个是我们理解两者一点点区别到关键,在字符串中,默认存储的时候都有个‘\0’,为什么要这样,就是为了告诉内存存放到字符快结束了。
而字符数组其实不需要到,为什么呀,因为我们一看代码就知道有多长咯!
好到,关键到了:<string.h>中很多的函数都是以 '\0' 来完成的,这个是函数的调用标志,那我们在调用函数的时候注意有没有‘\0’,有的话就OK,没有的话像字符数组类似的话,就得手动加上'\0'咯。。OK!
SQ - 2014-04-16
*/
#include<stdio.h>
int main(){
strcpy_1();
return 0;
}
void strcpy_1(){
char *s= "hello,this is a test!";
char src[20]={'a', 'b', 'c', 'd' ,'e' ,'f' ,'g' ,'h'};
char dest_1[100]={1};
char dest_2[100]={1};
char dest_3[100]={1};
int i=0;
printf("%s\n" ,s); //1 .体现了访问字符串和字符数组没什么两样!
while(s[i] != '\0')
printf("%c",s[i++]);
printf("\n");
strcpy(dest_1 ,s); //2. char *strcpy(char *dest, const char *src);
int j=0; // 其实dest也可以是字符数组
while(dest_1[j] != '\0')
printf("%c",dest_1[j++]);
printf("\n");
int k=0;
strcpy(dest_2,src); //3. 其实src也可以是数组. strcpy会自动的在拷贝之后加'\0'
while(dest_2[k] != '\0')
printf("%c",dest_2[k++]);
printf("\n");
int n=0;
while(s[n] != '\0') { //4. 自己实现的将字符串转换成字符数组 (基于的条件就是可以用取字符数组的格式取得字符串! s[n])!
dest_3[n]=s[n];
n ++;
}
dest_3[n+1] = '\0';
n=0;
while(dest_3[n] != '\0')
printf("%c",dest_3[n++]);
printf("\n");
}