C语言基础-字符串14

       在C语言中,没有专门的类型去储存字符串类型的数据,C语言是通过字符数组来保存字符串数据的。 将字符串数据的每1个字符存储到字符数组中,并在后面追加1'\0'代表字符串存储完毕.

1.如何储存字符串

        a. 最根本的方式.

           char name[5] = {'j','a','c','k','\0'};

           将字符串的每一个字符存储到字符数组中,在后面追加1'\0'代表存储结束.

           char name[] = {'j','a','c','k','\0'};

        b. 简写的方式.

           char name[] = {"jack"};

           系统自动的会将这个字符串中的每一个字符存储到字符数组中,并自动追加1'\0'.

        c. 最常用的方式.

           char name[] = "jack";

           系统自动的会将这个字符串中的每一个字符存储到字符数组中,并自动追加1'\0'.

2.常用函数

      printf函数

     使用printf函数输出存储在字符数组中的字符串数据.使用格式控制符%s 就可以输出存储在字符数组中的字符串数据.从给定的数组的地址开始 1个字节1个字节的输出,直到        遇到'\0'为止.

    使用scanf函数接收用户输入的字符数据

   1). 先准备1个字符数组来保存用户输入的字符串数据.

        char str[10];

    2). 使用scanf函数接收用户输入字符串数据并存储到指定的字符数组中.

            scanf("%s",str);

注意:

    1). 如果输入的字符串数据在给定的字符数组中存储不下的时候,就会运行报错

    2). 用户在输入字符串的时候,如果输入了空格,就会认为输入结束.

 使用以上两种函数有很多的不足,所以常用的是以下函数

 1. puts()函数.

    作用:用来输出字符串的.

    语法格式: puts(存储字符串的字符数组名);

    优点:输出完毕之后,自动换行.

    缺点:只能输出字符串.也不能使用占位符.

 

 

 2. gets()函数

    作用: 从控制台接收用户输入1个字符串数据.

    语法格式: gets(存储字符串的字符数组名);

    优点: 当用户输入的数据包含空格的时候 它会连空格一起接收.

 

    缺点:scanf函数一样 不安全.

        当用来存储字符串的数据的字符数组的长度不够的时候 程序就会崩溃.

 

 ------下面四个函数 是声明在string.h这个头文件中------

 

 3. strlen();函数

 

    作用: 得到存储在字符数组中字符串数据的长度.

    语法格式:   strlen(字符串);

 4. strcmp()函数.

    cmp --> compare 比较.

    作用: 用来比较两个字符串的大小的.

    语法格式:

    strcmp(字符串1,字符串2);

    返回值是int类型的.

    

    如果返回的是负数.就说明字符串1比字符串2.

    如果返回的是正数 就说明字符串1比字符串2.

    如果返回的是0 就说明一样.

    比较的规则:比的是相同位置的字符的ASCII码的大小.

 5. strcpy()函数  copy 


    作用: 把存储在1个字符数组中的字符串数据拷贝到另外1个字符数组中存储.

    格式:

    strcpy(字符串1,字符串2);

    将字符串2拷贝到字符串1数组中.

    可能的问题.

    存储字符串1的字符数组长度不够,无法存储字符串2 这个时候运行就会崩溃.


 6. strcat()函数. concat: 连接.

    语法格式

    strcat(字符数组1,字符数组2);

    作用: 把存储在字符数组2的字符串数据链接在字符串1的后面.

         将两个字符串合成1个字符串.

    存在的问题:

    如果字符数组1中无法存储下字符数组2的字符串数据,运行就会报错.


使用注意.

 

    1). 如果我们使用字符数组存储字符串数据的时候,没有指定这个字符数组的长度.

        那么这个时候,这个字符数组的长度 字符串的长度 + 1

    2). 如果我们使用字符数组存储字符串数据的时候,指定了这个字符数组的长度.

        那么这个字符数组的长度就是我们指定的长度.

    3). 如果指定的字符数组的长度小于等于了字符串的长度,这个时候就会有问题了.

        就会出现存储不下的情况.

    4). 所以,我们在使用字符数组存储字符串数据的时候,最好就不要指定长度了,让让知己算 这样刚合适.

    5). 如果在声明1个字符数组的同时我们就初始化1个字符数据给这个数组,

        那么这个时候是可以用中文.

        1个中文占据3个字符.







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值