• 李洪强-C语言2-字符串


    C语言字符串

    一、字符串基础

    注意:字符串一定以结尾。

    Printf(“yang ”);

    其中yang为字符串常量,“yang”=‘y’+‘a’+‘n’+‘g’+‘’。字符串由很多的字符组成,通常使用字符数组来存储字符串,如char name[10]=“yang”;也可以以printf(name);的形式输出,即通过数组来访问字符串,但会有警告。因为默认情况下,printf函数只接受字符串常量作为参数(对变量并未写明)。

    字符串的三种写法:

    1. Char name[8]=“yang”;//数组占用了8个字节的存储空间,但是只含有5个字符。
    2. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘o’};
    3. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘0’};

    这三种写法在内存中的表现都是一样的。

     

    Char name[]={‘y’+‘a’};前面不写个数,不是一个字符串,只能说是一个普通的字符数组。

    char name[]=“yang”;

    Name[1]=‘o’;把字符串的第二个元素值由a改成o。

     

    二、字符串使用注意点

    (1)分析代码,了解的作用。

    Char name[]=“yang”;

    Char name2[]={‘o’+‘k’};

    Printf(“name2=%s”,name2);

    %s:根据右边的参数,打印字符串(遇到为止)

    上面代码的打印结果为:okyang

    下面是内存情况分析:

     

    问1:Char name[]=“yng”;则打印结果为什么?(oky)

    问2:此时打印name的值,使用%s是多少?Yng还是y?

    (2)Strlen函数

    Strlen函数计算字符串的长度(字符数)但不包括,是字符数不是字数。比如一个汉字占三个字符。

    Strlen(“haha”);//长度为4

    Strlen(“哈haha”);//长度为7而不是5

    char name[]=“itcast”;

    Strlen(name);值为2,因为strlen从字符串的地址开始计算,直到遇到为止。

    假设

    Char name[]=“itcast”;

    Char name2[]={‘o’+‘k’};

    Int size=strlen(name);

    此时size的值为8。

    (3)练习,编写一个函数char_contains(char str[],char c),如果字符串中包含字符c,则返回1,否则返回0。

    Int char_contains(char str[],char c)

    {

    //遍历整个字符串

    For(int i=0,i<strlen(str);i++)

    {

    If(str[i]==c)

    Return 1;

    }

    Return 0;

    }

     

    //调用语句

    Int result=char_contains(“yang”,‘a’);

    //使用while循环

    ①. While(i<strlen(str))

    ②. While(str[i]!=‘’)

    ③. While(str[i])

    ④. Int i=-1;while(str[i++])

     

    三、字符串数组

    二维字符数组,存储两个字符串数组,每个的长度为1,下面是两种写法但存储情况是一样的。

    Char name[2][10]={“jack”,“rose”};

    Char name2[2][10]={

    {‘j’+‘a’+‘c’+‘k’+‘’},

    {‘r’+‘o’+‘s’+‘e’+‘’}

    }

    把rose输出:printf(“%s”,name2[1]);

    输出k:printf(“%c”,name2[0][3]);

     

  • 相关阅读:
    Docker基础 镜像,容器,仓库核心概念 常用命令和软件安装示例
    JHipster创建微服务及相关微服务架构组件介绍
    PageHelper分页插件及相关案例介绍
    DataTables API及服务端处理模式介绍和后端分页案例
    微服务概念及SpringCloud五大神兽介绍
    GitHub上重要的几个搜索技巧
    Java 内存区域详解
    莫等闲,白了少年头,空悲切!
    解决Mongoose中populate方法导致模板引擎art-template无法渲染的问题,错误-RangeError: Maximum call stack size exceeded
    vscode添加到右键菜单【win10系统】
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5545074.html
Copyright © 2020-2023  润新知