探讨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;
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 关于指针与数组的关系(C语言)
- 使用C语言实现哈夫曼树的编码,压缩和解码过程。
- C语言小白上楼梯问题(递归)
- C语言小白用xcode遇见的问题,求大牛们相助
- 关于C语言递归函数的心得及一些例题
- C语言中Switch语句的范围比较解决方案(学习笔记)
- C语言静态库与动态库一些心得
- c/c++中的uint8_t uint16_t uint32_t uint64_t size_t数据类型
- c语言:简单的客户管理系统
- windows c++调用Pytorch模型的过程
- Atl实战系列《用ATL COM Wizard 实现(VC++的插件)Add-in》
- C++进制转换
- c++ 数组长度
- C语言程序设计之循环结构。
- C语言十一月七号。
- C语言程序设计之数组。
- C语言程序设计(11.26)
- C语言程序设计(11.28)
- C语言程序设计(12.5)
- 大数据排序(10亿量级以上)C语言实现