C语言字符串

一: 字符串:

    格式: 用“”括起来的字符(其实c语言中得字符串本质就是一个字符数组)

    注意:

    1)字符的变量是不能够存储字符串   char a='c';    a ="ab";(错) a="中"(错)

    2)C中没有字符串类型,字符串是用字符数组来存储

 

二:字符数组

    1)初始化方法

    1)先定义,后初始化

    char c3[6];

    c3[0]='a';

    c3[1]=65;  //'A' 字符型和整型 可以互相转换

    2)定义的同时进行初始化

    跟一维数组初始化一样:

    char c4[5]={'h','e','l','l','o'}; 不带\0因为这样初始化是按照字符依次存储到分配的内存中

    char c5[]={'h','e','l','l','o',' ','w'};

    不一样的:

    char c6[]={"hello world!"}; 这样初始化带\0,也就是内存多一个字节

    char c7[20]={"hello itcast!"};

    char c8[]="fasdfasdf";

    注意:

    字符数组和其他的整形数组一样,当我们一旦给数组部分初始化了

    剩下没有初始化的部分也都是0

    2)访问方式

    1)访问单个字符

    printf("%c",c[0]);

    2)以字符串的形式输出

    char c[5]="asbc";

    printf("%s",c); %s遇到\0就会结束

 

    3)存储原理

    字符数组在内存中存储的原理

    1)计算机分配连续的内存空间

    2)字符串的第一个字符存放到地地址中

    3)字符数组的每一个字符占用1个字节

    char c1[6];

    int len = sizeof(c1)/sizeof(char);

    = sizeof(c1);

 

    注意:

    1>char c5[]={'h','e','l','l','o',' ','w'};  //c5的每一个元素都是char类型,赋了7个值,长度是7

    printf("c5:%s\n\n",c5);//打印结果:c5:hello whelloaA,造成这个问题的原因是没有遇到,以%s的格式进行打印,只有遇到\0才结束,因字符数组中存放的没有\0,继续打印

 

    2>char ch[20],ch1[10],ch2[10];

    //以%s格式进行输入的时候,输入的时候,不能输入空格

    //如果输入了空格,认为此次输入结束,scanf退出

    scanf("%s%s%s",ch,ch1,ch2);

 

三:字符串的长度计算问题

 

    1)统计字符串可见的字符的个数(不含\0)

 

    char c[]="aaaaaa";

    int i=0;

    while(c[i]!='\0')i++;

    printf("%d\n",i);

 

    2)统计字符串占用的字节数(含\0)

 

    char c[]="afasfdasdfasf";

    int i=0;

    while(c[i++]!='\0');

    printf("%d\n",i);

 

四: //1、puts()  输出的函数,输出内容到输出的缓冲区

    //    printf("Hello, World!\n");

    //    //fflush(stdout);  //强制刷新缓冲区

    //    //puts可以帮我们自动换行

    //    puts("hello world!");

    //

    //    char ch[]="asdfasfasfasf";

    //    puts(ch);

    //puts的缺点是不能格式化输出

 

    //2、gets() 获取用户从键盘上输入的内容

    //优点:可以从键盘接收含空格的字符串

    //注意:warning: this program uses gets(), which is unsafe.

    //gets()是不安全的

    //    char ch3[10];//当输入的内容超出了数组的长度,gets()会在数组中放10个字符,但是没有'\0'

    //    char ch1[10];

    //    //获取内容,从键盘上

    //    gets(ch1);

    //    //输出内容

    //    puts(ch1);

 

 

    //3、strcat 字符串连接函数

    //    char oldStr[40]="welcome to ";

    //    char newStr[10];

    //    gets(newStr); //接收用户输入的内容

    //    //把newStr连接到oldStr最后,newStr会覆盖oldStr的'\0'

    //    strcat(oldStr,newStr); //进行字符串的连接

    //    puts(oldStr);

 

    //4、strcpy 字符串的拷贝函数

    //    char oldStr[40]="welcome to ";

    //    char newStr[10];

    //    gets(newStr);

    //    //把newStr的内容拷贝到oldStr中,会覆盖oldStr中的内容

    //    strcpy(oldStr,newStr);

    //    puts(oldStr);

 

    //5、strcmp 字符串的比较函数

 

    //    char oldStr[10]="abcde";

    //    char newStr[10];

    //    //strcmp(oldStr,newStr) 逐个比较字符的ascii码值

    //    //返回值>0 表示oldStr>newStr

    //    //返回值<0 表示oldStr<newStr

    //    //返回值=0 表示oldStr==newStr

    //

    //

    //    gets(newStr);

    //    if (strcmp(oldStr,newStr)>0) {

    //        puts("你输入的字符串小了");

    //    }else if(strcmp(oldStr,newStr)<0){

    //

    //        puts("你输入的字符串大了");

    //    }else{

    //

    //        puts("相等");

    //

    //    }

 

posted @ 2014-10-20 21:54  _boy  阅读(400)  评论(0编辑  收藏  举报