码迷,mamicode.com
首页 > 编程语言 > 详细

c语言之字符串数组

时间:2018-03-11 22:35:16      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:自动   ret   while   i++   初始化   post   soft   ==   for   

一、字符串与字符串数组

  1、字符数组的定义

    char array[100];

  2、字符数组初始化

    char array[100] = {‘a‘,‘b‘,‘c‘};  //array[0] = ‘a‘    array[10] = 0

    char aray[100] = "abcdef"; 

    char aray[100] = {0};

    char aray[] = "qwertyuiop"; //未指定长度时,根据字符串长度自动填写。

  3、sizeof()方法 查看数组的字节长度 

    例如:

#include<stdio.h>
int main(void)
{
    char a[] = "asdfg";
    int len = sizeof(a);
    printf("数组a的长度为:%d",len);  //数组a的长度为:6 --> "asdfg\0"(实际上字符串以数字0结尾)
    return 0;
}

  4、字符数组的使用

    例一:排序  

技术分享图片
#include<stdio.h> 

int main(void)
{
    char a[] = "befacd";
    char i,j,temp;
    for(i=0;i<sizeof(a)-1;i++)
    {
        for(j=1;j<sizeof(a)-1-i;j++)
        {
            if(a[j-1]>a[j])
            {
                temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
            }
        }
     } 
    printf("%s\n",a); // 输出: abcdef 

    return 0;
}
View Code

     例二:字符串倒置(首尾倒置)

技术分享图片
#include<stdio.h> 
int main(void)
{
    char str[] = "hello world";
    int i = 0;
    while(str[i++]) ;
    int len = i-1;  //字符串有效长度 
    int min = 0;
    int max = len-1; // 下标最大值 
    while(min<max) 
    {
        char temp = str[min];
        str[min] = str[max];
        str[max] = temp;
        min++;
        max--;
    }
    printf("%s\n",str); // 输出: dlrow olleh 
    return 0;
}
View Code

    例三:汉字首尾逆置

#include<stdio.h> 
int main(void)
{
    char b[] = "你好!明天"; //每个中文字符在gbk编码中占两个字节
    int i = 0;
    while(b[i++]) ; //不断遍历字符串,直至遇到末尾的0,退出
    i--;     // 字符串的有效长度
    int min = 0;
    int max = i-1;
    while(min<max)
    {
        char tmp;
        tmp = b[min];     //调换第一个字节和倒数第二个字符
        b[min] = b[max-1];
        b[max-1] = tmp;
        
        tmp = b[min+1];   //调换第二个字节和最后一个字符
        b[min+1] = b[max];
        b[max] = tmp;
        
        min += 2;
        max -= 2;
    }
    printf("倒置后的字符串:%s\n",b);   // 倒置后的字符串:天明!好你
     
    return 0;
}

    例四:混合统计汉字和ASCII字符串字符  

#include<stdio.h>
int main(void)
{
    char str[] = "厉害了,MyCountry!";
    int len_e = 0;
    int len_c = 0;
    int sum = 0;
    int i,j;
    while(str[i])
    {
        if(str[i]<0)
        {
            len_c += 1;
            i += 2;
         } 
         else{
             len_e += 1;
             i += 1;
         }
    }
    sum = len_c+len_e;
    printf("中文字符:%d,英文字符:%d,所有字符总数:%d",len_c,len_e,sum); //中文字符:4,英文字符:10,所有字符总数:14 
    return 0;
}

    例五:去除字符串右边的空格

#include<stdio.h> 
int main(void) 
{
    char c[100] = "hello   ";
    int i = 0;
    int len,j;
    while(c[i++]) ;
    len = i--;
    for(j=len;j>0;j--)
    {
        if(c[j]!= )
        {
            c[j++]=0;
            break;
        }
    }
    printf("取掉末尾的空格后的字符串:%s\n",c); //取掉末尾的空格后的字符串:hello
    return 0;
}

    例六:去除字符串前面的空格

技术分享图片
#include<stdio.h>
int main(void)
{
    char s[100] = "    hello,boy";
    int count = 0;  //统计空格长度 
    int i;
    while(s[count++]== ) //遍历空格 
    count--; //取得空格数量 
    i = count; //字符开始位置 
    while(s[i]) 
    {
        s[i-count] = s[i]; //第一个字符赋给第一个位置
        i++; 
     } 
    s[i-count] = 0; //字符串最后赋0
    printf("去除空格后的字符串:%s\n",s);
     
    return 0;
    
}
View Code

   4、数组总结

    1、数组的本质就是一次定义多个类型相同的变量,同时一个数组中所有的元素在内存中都是顺序存放的。
    2、char s[100] ;s[0]-->s[99],切记没有s[100]这个元素。并且c语言编译器不会帮你检查下标是否有效。
    3、字符串一定是在内存中以0结尾的一个char数组。

 

 

 

    

    

c语言之字符串数组

标签:自动   ret   while   i++   初始化   post   soft   ==   for   

原文地址:https://www.cnblogs.com/schut/p/8546239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!