字符串长度解析

原创

字符串长度解析以及字符串的几种打印方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/eternal_yangyun/article/details/82729280
         <!--一个博主专栏付费入口结束-->
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
                                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
            <div class="htmledit_views" id="content_views">
                                        <h2><span style="color:#f33b45;">字符串</span></h2>

何为字符串,估计很多小伙伴都知道这个东西但不清楚它的定义,其实很简单,就一句话:

由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注意:字符串不是一种数据类型哟,数据类型有:整形,浮点型,字符型.......

“i love you” 这就是一个字符串,我们必须注意,每个字符串都有一个结束标志,即\0,好了,那大家觉得我举出的这个字符串的大小为多少呢?
可能答案:8   10    11
多说无益,先上一段代码把结果呈现给大家:
 


 
 
  1. #include<stdio.h>
  2. #include<string.h> //用strlen函数需添加头文件
  3. int main()
  4. {
  5. char s[]= "i love you"; //将字符串存放于一个char型的数组
  6. printf( "%d", strlen(s)); //strlen函数用来测字符串长度
  7. return 0;
  8. }

结果:

大家可以看到,结果为十,为八的数落下的2个空格,为11的把\0也算入字符串长度里了,所以根据以上结果,字符串长度不计入末尾的\0。

字符串的打印
想要打印字符串,则先应将它存储起来,存放字符串常用方法为将它存放在一个字符型的数组里面,还可以将一个指针指向一个字符串的首地址,下面呈上一段详细代码:
 


 
 
  1. #include<stdio.h>
  2. int main()
  3. {
  4. /*三种存放方法*/
  5. char d[] = { 'i', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u' };
  6. char s[] = "i love you"; //将字符串存放于一个char型的数组
  7. char *p = "i love you";
  8. printf( "%s\n", s); //正确输出 1
  9. printf( "%s\n", p); //正确输出 2
  10. printf( "%s\n",d); //错误输出
  11. for ( int i = 0; i< sizeof(d)/ sizeof(d[ 0]); i++) //正确输出 3
  12. printf( "%c", d[i]);
  13. return 0;
  14. }

结果:

从代码中可以看到三种存放方法,那为啥第一种方法的输出会输出错误码呢。
其实原因就是在第一种存放中,末尾没有手动添加一个'\0'的字符,所以没有结束标志,就会乱码,第二种是因为字符串末尾会自动以'\0'结束,所以输出正确。
正确输出3则是一个一个打印出来,不需要添加'\0'。

下面是添上后的代码:
 

char d[]={'i',' ','l','o','v','e',' ','y','o','u','\0'};
 
 

结果:

 

文章最后发布于: 2018-09-16 21:28:20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值