您的位置:首页 > 编程语言 > C语言/C++

探讨C语言字符串的初始化,赋值以及会出现的问题

2020-02-15 06:48 253 查看

c语言里面没有字符串这种类型
通过字符数组来模拟字符串
c语言风格字符串是以 0 或 \0 结尾的字符串

我们通过下面程序看看:                              

[code]# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main(void)
{
//字符数组初始化
//指定长度,如果定义长度剩余部分补充0
char buf1[100] = { 'a', 'b', 'c' };
//不指定长度
char buf2[] = { 'a', 'b', 'c' };
char buf3[] = { 'a', 'b', 'c', '\0' };
//通过字符串初始化字符数组,并追加\0
char buf4[] = "abcd";
printf("buf1 = %s\n", buf1);
printf("buf2 = %s\n", buf2);//出现乱码,要末尾添加 '\0' 或 0
printf("buf3 = %s\n", buf3);
printf("buf4 = %s\n", buf4);//此处不可以用%c输出,%c一个字符,%s 一个字符串,遇空格、制表符或换行符结束。
printf("sizeof(buf4):%d\n", sizeof(buf4));//注意sizeof是对整个数组类型进行大小测量,包括 \0
printf("strlen(buf4):%d\n", strlen(buf4));//strlen求字符串长度不包括 0 或 \0

system("pause");
return 0;
}

字符数组定义长度剩余部分补充 0 也就不会出现乱码

如果字符数组初始化不定义长度不追加 0 或 \0 那么就会出现乱码。

strlen()计算字符串的长度不包括 0 或 \0 , 所以 strlen(buf) = 4;

sizeof()计算整个字符数组长度包括 0 或 \0, 所以 sizeof(buf) = 5;

 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
剑 来 发布了6 篇原创文章 · 获赞 0 · 访问量 86 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: