字符串和字符数组的相互转换

时间:2022-06-06 17:52:56

/* 在写代码之前,先弄清字符串和字符数组的区别。 ——其实他们没有任何区别,只是存放在内存中的一样到数,是字符串还是字符数组,完全是由我们去看待的!

那 ‘\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");
}