zoukankan      html  css  js  c++  java
  • C语言字符数组回顾

    赋值篇:


     Part1      错误引例*2:

    1     char c6[];//WRONG
    2     c6="HELLO";//WRONG
    3 
    4     char c7[];//WRONG
    5     c7[0]='H';//WRONG
    6     c7[1]='E';//WRONG
    7     c7[2]='L';//WRONG
    8     c7[3]='L';//WRONG
    9     c7[4]='O';//WRONG
     
    1.不允许声明之后才对整个字符数组进行赋值,比如c6
    2.除非声明时顺便赋值了,否则不允许不声明数组长度,比如c7
     

    Part2:
    1     char c1[]={'H','E','L','L','O'};
    2     char c2[]={'H','E','L','L','O',''};
    3     char c3[10]={'H','E','L','L','O',''};
    4     printf("c1:%s  sizeofc1:%d
    ",c1,sizeof(c1));
    5     printf("c2:%s  sizeofc2:%d
    ",c2,sizeof(c2));
    6     printf("c3:%s  sizeofc3:%d
    ",c3,sizeof(c3));

    1.printf %s时,每次地址+1,直到找到' '为止,所以c1会乱码


     Part3:

    1     char *c4="HELLO";
    2     char *c5="HELLO";
    3     char *c6;
    4     c6="HELLO";
    5     printf("c4:%s  sizeofc4:%d
    ",c4,sizeof(c4));
    6     printf("c5:%s  sizeofc5:%d
    ",c5,sizeof(c5));
    7     printf("c6:%s  sizeofc6:%d
    
    ",c6,sizeof(c6));

    1.注意字符指针可以声明后赋值,与第一个c6对比
    2.注意这里打印的size,因为打印的是字符串数组的首字地址size,所以size都是一样的


    Part4:

    1     char c7[]="HELLO";
    2     char c8[]="HELLO";

    1.注意用字符串常量赋值会自动补''
    2.注意就算你自己加了''还是会给你自动加''
     

    Part5:
     1     char c9[5];
     2     c9[0]='H';    c9[1]='E';
     3     c9[2]='L';    c9[3]='L';    c9[4]='O';
     4 
     5     char c10[6];
     6     c10[0]='H';    c10[1]='E';
     7     c10[2]='L';    c10[3]='L';
     8     c10[4]='O';    c10[5]='';
     9     printf("c7:%s  sizeofc7:%d
    
    ",c7,sizeof(c7));
    10     printf("c9:%s  sizeofc9:%d
    
    ",c9,sizeof(c9));
    11     printf("c10:%s  sizeofc10:%d
    
    ",c10,sizeof(c10));

    1.注意c9,因为printf %s时,每次地址+1,直到找到' '为止,所以会把c10也一起打印了


    Part6      scanf输入:

        char a[10];
        scanf("%s",a);
        printf("%s",a);

    假如像这样普通输入的话,遇到空格、换行都会使字符串赋值中断,一种解决方法是看有多少段,逐段赋值然后连到一起。另一种方法是gets()

    1     char a[10];
    2     gets(a);
    3     puts(a);

    1.gets()可以识别空格,直到换行符出现,舍弃换行符,并自动补''
    2.puts()将字符串输出后会自动换行
    3. getchar()、putchar()则是可以存储空格和换行的字符输入输出函数

    函数篇:


    Part1      strcpy(char * dest,char *sr):

    1     char c11[6];
    2     strcpy(c11,"HELLO");
    3     printf("c11:%s  sizeofc11:%d
    
    ",c11,sizeof(c11));
     
     
    功能:复制
    1.dest只能是数组名,且已经声明过长度,sr可以实字符串常量或数组名且最末尾必须是' '
    2.注意c11不可以不声明长度就开始复制
    3.假如要用到指针,也必须使指针已经指向某个数组才能使用,比如这样
    1     char *c11;
    2     char temp[6];
    3     c11=temp;
    4     strcpy(c11,"HELLO");
    5     printf("c11:%s  sizeofc11:%d
    
    ",c11,sizeof(c11));
     

    Part2      strcat(char *dest,char *sr):
    1     char c7[]="HELLO";
    2     char c8[]="HELLO";
    3     printf("c8:%s  sizeofc8:%d
    ",c8,sizeof(c8));
    4     printf("c8+c7:%s
    ",strcat(c8,c7));
    5     printf("c8:%s  sizeofc8:%d
    
    ",c8,sizeof(c8));

    功能:把sr的内容复制到dest结尾处(覆盖'') 

    1.c8里有2个' ',cat时扫描到第一个' '即开始复制
    2.strcpy和strcat都是以''作为结束标识
     

     Part3      strlen(char *str1):

    1     char c3[10]={'H','E','L','L','O'};
    2     printf("strlen(c3):%d   sizeof(c3):%d",strlen(c3),sizeof(c3));

    功能:求实际长度

  • 相关阅读:
    致命错误 RC1004: 文件查找结束时有无法预知的错误(vc++)
    demo713总结
    图标,鼠标,字符串,音频..
    不同的色深条件(8、16、24、32),像素绘制方式
    SQL 保留两位小数的实现方式
    MVC4的REmote缺陷
    MVC4安装过程
    mongodb 的几种驱动
    iis7 web配置问题及解决办法
    Fast Binary File Reading with C#
  • 原文地址:https://www.cnblogs.com/dudulukeyxian/p/10614289.html
Copyright © 2011-2022 走看看