字符串与字符数组

  • C语言中没有字符串这种数据类型,可以通过char的数组来替代;
  • 字符串一定是一个char的数组,但char的数组未必是字符串;
  • 数字0(和字符‘\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组。
#include <stdio.h>

int main()
{
char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符数组
printf("c1 = %s\n", c1); //乱码,因为没有’\0’结束符 //以‘\0’(‘\0’就是数字0)结尾的字符数组是字符串
char c2[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0'};
printf("c2 = %s\n", c2); //字符串处理以‘\0’(数字0)作为结束符,后面的'h', 'l', 'l', 'e', 'o'不会输出
char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0'};
printf("c3 = %s\n", c3); return 0;
}

字符串的初始化:

#include <stdio.h>

// C语言没有字符串类型,通过字符数组模拟
// C语言字符串,以字符‘\0’, 数字0
int main()
{
//不指定长度, 没有0结束符,有多少个元素就有多长
char buf[] = { 'a', 'b', 'c' };
printf("buf = %s\n", buf); //乱码 //指定长度,后面没有赋值的元素,自动补0
char buf2[100] = { 'a', 'b', 'c' };
printf("buf2 = %s\n", buf2); //所有元素赋值为0
char buf3[100] = { 0 }; //char buf4[2] = { '1', '2', '3' };//数组越界 char buf5[50] = { '1', 'a', 'b', '0', '7' };
printf("buf5 = %s\n", buf5); char buf6[50] = { '1', 'a', 'b', 0, '7' };
printf("buf6 = %s\n", buf6);
char buf7[50] = { '1', 'a', 'b', '\0', '7' };
printf("buf7 = %s\n", buf7); //使用字符串初始化,编译器自动在后面补0,常用
char buf8[] = "agjdslgjlsdjg"; //'\0'后面最好不要连着数字,有可能几个数字连起来刚好是一个转义字符
//'\ddd'八进制字义字符,'\xdd'十六进制转移字符
// \012相当于\n
char str[] = "\012abc";
printf("str == %s\n", str); return 0;
}

使用scanf接收字符串:

#include <stdio.h>

int main()
{
char str[100]; printf("input string1 : \n");
scanf("%s", str);//scanf(“%s”,str)默认以空格分隔
printf("output:%s\n", str); return 0;
}

最新文章

  1. Java中普通代码块,构造代码块,静态代码块执行顺序
  2. mac系统terminal连接linux
  3. IplImage, CvMat, Mat 的关系
  4. 删除binlog的方法
  5. redis 简介
  6. sharepoint One-Time Passwords (windows basic authentication)
  7. 写一段方便的SQL 循环查每一天的数据
  8. WPF实现毛玻璃效果
  9. Canvas之动态波浪效果_陈在真Sunny_chen_新浪博客
  10. Android System Property 解析
  11. 更新部分字段 NHibernate
  12. HDU 1681 Frobenius(完全背包+标记装满)
  13. Xcode7.3.1中SKAudioNode在Scene转换后无声的问题
  14. 优化之Normalizer组件
  15. [算法]PHP随机合并数组并保持原排序
  16. Python3 图片水平镜像实现
  17. dropzone 上传插件
  18. Linux基础命令---e2fsck
  19. 2018-2019 20165226 网络对抗 Exp1+ 逆向进阶
  20. go学习之文件读取问题(需更新)

热门文章

  1. 手机内存卡RAW无法格式化的解决办法
  2. PP:Classification of Time-Series Images Using Deep Convolutional Neural Networks
  3. StreamPipes
  4. normalization, standardization and regularization
  5. linux异常 - unzip: 未找到命令
  6. 【metasploit教程】之建立数据库
  7. 字符串UTF-8和GBK之间的转换以及判定
  8. GitBook相关使用以及配置笔记
  9. python面试的100题(10)
  10. python自动化测试之生成BeautifulReport可视化测试报告