原创
字符串长度解析以及字符串的几种打印方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
<!--一个博主专栏付费入口结束-->
<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
多说无益,先上一段代码把结果呈现给大家:
-
#include<stdio.h>
-
#include<string.h> //用strlen函数需添加头文件
-
int main()
-
{
-
char s[]=
"i love you";
//将字符串存放于一个char型的数组
-
printf(
"%d",
strlen(s));
//strlen函数用来测字符串长度
-
return
0;
-
}
结果:
大家可以看到,结果为十,为八的数落下的2个空格,为11的把\0也算入字符串长度里了,所以根据以上结果,字符串长度不计入末尾的\0。
字符串的打印
想要打印字符串,则先应将它存储起来,存放字符串常用方法为将它存放在一个字符型的数组里面,还可以将一个指针指向一个字符串的首地址,下面呈上一段详细代码:
-
#include<stdio.h>
-
int main()
-
{
-
/*三种存放方法*/
-
char d[] = {
'i',
' ',
'l',
'o',
'v',
'e',
' ',
'y',
'o',
'u' };
-
char s[] =
"i love you";
//将字符串存放于一个char型的数组
-
char *p =
"i love you";
-
-
printf(
"%s\n", s);
//正确输出 1
-
printf(
"%s\n", p);
//正确输出 2
-
-
printf(
"%s\n",d);
//错误输出
-
-
for (
int i =
0; i<
sizeof(d)/
sizeof(d[
0]); i++)
//正确输出 3
-
printf(
"%c", d[i]);
-
-
return
0;
-
}
结果:
从代码中可以看到三种存放方法,那为啥第一种方法的输出会输出错误码呢。
其实原因就是在第一种存放中,末尾没有手动添加一个'\0'的字符,所以没有结束标志,就会乱码,第二种是因为字符串末尾会自动以'\0'结束,所以输出正确。
正确输出3则是一个一个打印出来,不需要添加'\0'。
下面是添上后的代码:
char d[]={'i',' ','l','o','v','e',' ','y','o','u','\0'};
结果: