博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

c-字符串

Posted on 2017-10-23 11:07  IT_LM  阅读(176)  评论(0编辑  收藏  举报

/*****字符串基本概念******/
#include <stdio.h>
#include <string.h>

int main()
{
    char first[4] = {'l','m','\0'};//定义字符串 注意别忘了给字符串分配大小
    char second[9] = "你好lm";//定义字符串的另一种形式
    
    char third[] = {'x','f','\0'};//这个不是字符串,但是是一个简单的字符数组
    char four[] = "asc\0df";
    
    char arr[2][10] = { //二维数组的定义和输出
        {'a','b','c','\0'},
        {'d','e','l','\0'}
    };
    
//    char arr[2][10] = {
//               "abcde",
//                "dfdsfdsf"
//            };
    
    int size1 = sizeof(second);//计算字节数,一个汉字有3个字节数。'\0'也计算进去
    int size2 = strlen(second);//计算除了‘\0’的字节数。
    
    int size3 = sizeof(four);//计算全部的字节数
    int size4 = strlen(four);//以'\0'来作为结束标志,且不把’\0‘计算进去
    
    printf("%s \n",first);
    printf("%s\n",second);
    
    //数组的输出是以当前数组地址为起点,直到‘\0‘才结束。所以如果字符数组如果没有分配'\0'的话
    //它会继续输出其他的数组。
    printf("%s\n",third);
    
    printf("%c\n",four[2]);
    
    printf("%d\n",size1);
    printf("%d\n",size2);
    
    printf("%d\n",size3);
    printf("%d\n",size4);
    
    printf("ssssss\n");
    for(int i=0; i<2; i++){
        printf("***\n");
        for(int j=0;j<strlen(arr[i]);j++){
            printf("%c\n",arr[i][j]);
        }
    }
    
    return 0;
    
}

 

/****练习******/

#include <stdio.h>
#include <string.h>


int char_contains(char str[],char c)//需要定义在main函数前面
{
    int len = strlen(str);
    for (int i=0; i<len; i++)
    {
        if (str[i] == c)
        {
            printf("1\n");
        }
        else {
            printf("0\n");
        }
    }
    return 0;
}

void char_contains2(char str[],char c)
{
    int i = 0;
    
    while( str[i] ) {//如果字符不为'\0'为真。
        
        if(str[i] == c) {
          printf("1\n");
        } else {
          printf("0\n");
        }
       
        i++;
    }
}

int main()
{
    char str[] = "acdcb";
    char_contains(str,'c');
    printf("******\n");
    char_contains2(str,'c');
    return 0;
}