字符串

作者: SimpleSJ | 来源:发表于2018-10-29 15:40 被阅读0次

1.概念

  • 字符串是位于双引号中的字符序列,由字符组成
    • 在内存中以“\0”结束,所占字节比实际多一个

2.初始化

  • 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以‘\0’作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符‘\0’存入数组,并以此作为该字符串是否结束的标志。有了‘\0’标志后,就不必再用字符数组 的长度来判断字符串的长度了。
  • 初始化
    char name[9] = "sj"; //在内存中以“\0”结束, \0 ASCII码值是0
    char name1[9] = {'s','j','\0'};
    char name2[9] = {'s','j',0};
    char name3[9] = {'s','j'};//静态数组如果没有赋值默认就是0,0就相当于\0

3.c语言字符串常用方法

  • C语言􏰀供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转 换、复制、搜索几类。 使用这些函数可大大减轻编程的负担。
    • 用于输入输出的字符串函数,在使用前应包含头文件"stdio.h"
    • 使用其它字符串函数则应包含头文件"string.h"。
  • 1.字符串输出函数:puts
格式: puts(字符数组名)
功能:把字符数组中的字符串输出到显示器。即在屏幕上显示该字符串。
优点:
自动换行
可以是数组的任意元素地址
缺点
不能自定义输出格式, 例如 puts("hello %s");
char ch[] = "sj";
puts(ch);
输出结果: sj
  • 2.字符串拼接函数strcat/strlcat
//char *strcat(char *s1, const char *s2)
//size_t strlcat(char *dst, const char *source, size_t size)

//注意:要想使用字符串拼接函数, 那么s1必须是一个数组, 并且数组的长度必须大于拼接之后的长度 \ 如果s1数组的长度, 不能完全存放s1+s2+\0, 那么就会报错
char str1[10] = "sj";
char str2[10] = "cool";
char *c = strcat(str1, str2);
printf("%s\n",c);
//输出:
sjcool

// 为了避免拼接之后超出str1的存储范围, 那么可以动态计算str2中需要拷贝几个到str1后面不会超出
char str1[10] = "sj";
char str2[10] = "cool";
size_t length = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1;
strlcat(str1, str2, length);
printf("%s\n",str1);
//输出:
sjcool
  • 3.字符串拷贝strcpy/strncpy
// strcpy函数会将源的数据拷贝到目标中, 并且会覆盖掉目标中原有的数据
// 目标的容积必须能够存放拷贝的数据, 如果容积不够会报错
char str1[6] = "sj";
char str2[] = "cool";
printf("拷贝前 : %s\n", str1);
char *c = strcpy(str1,str2);
printf("拷贝后:%s\n",c);
//输出:
拷贝前 : sj
拷贝后:cool

// 注意: 拷贝操作是逐个替换, 拷贝了几个就替换几个,strncpy为了优化strcpy会出现崩溃的情况,动态的计算需要拷贝几个
char str1[6] = "sj";
char str2[] = "cool";
printf("拷贝前 : %s\n", str1);
size_t length = sizeof(str1)/sizeof(str1[0]) - 1;
char *d = strncpy(str1, str2, length);
printf("拷贝后:%s\n",d);
//输出:
拷贝前 : sj
拷贝后:cool
  • 4.字符串比较
    char str1[] = "aac"; // a a
    char str2[] = "abc"; // a b

    // strcmp它会对传入的字符串进行比较, 比较完毕之后会返回一个整型的值给我们
    // 如果该值等于0,那么证明两个字符串相等
    // 如果该值小于0, 那么证明str1小于str2
    // 如果该值大于0, 那么证明str1大于str2
    // strcmp的原理: 取出字符串中的每一个字符进行逐个比较, 如果发现不相等就不会继续往下比较
    int res = strcmp(str1, str2);
    printf("res = %i\n", res);
//输出:
res = -1
  • 5.字符串长度 strlen(字符数组名)
    char name[] = "sj";
    int size = sizeof(name);// 包含\0
    printf("size = %d\n", size);
    输出结果:3

//strlen:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。
    char name[] = "sj";
    size_t len = strlen(name2);
    printf("len = %lu\n", len);
    输出结果:2

相关文章

  • Javascript知识点整合

    字符串 单行字符串: ‘字符串’或“字符串” 多行字符串: `多行字符串` 字符串操作: 字符串连接‘+’号 长度...

  • C++基础字符串

    字符串的构造 字符串特性描述 字符操作 字符串赋值 字符串连接 字符串比较 字符串查找 字符串替换 字符串删除 字...

  • iOS中的NSString与NSMutableString

    字符串的创建 字符串读写 字符串的比较 字符串的搜索 字符串截取 字符串替换 字符串与路径 字符串转换 NSMut...

  • iOS NSString用法总结

    字符串属性 字符串截取 字符串比较 字符串搜索 字符串拼接 字符串基本类型转换 字符串分行,分段 字符串列举(按条...

  • php 字符串常见方法汇总

    字符串拼接 字符串检索 字符串截取 字符串替换 字符串大小写转化 字符串转数组 字符串格式化

  • iOS 字符串截取、iOS 字符串替换、iOS 字符串分隔、iO

    iOS之字符串截取、iOS 字符串替换、iOS字符串分隔、iOS之字符串匹配、截取字符串、匹配字符串、分隔字符串 ...

  • PHP中字符串函数库常用函数解析 -- PHP 学习 (十一)

    常用字符串函数分类: 字符串长度, 字符串查找, 字符串大小写转换, 字符串截取, 字符串 ASCII, 字符串加...

  • Kotlin语言(二):字符串类型

    1、字符串定义 2、字符串删除空格 3、字符串比较 4、字符串切割 5、字符串截取 6、字符串替换 7、字符串模板

  • 字符串扩展

    求字符串大小 字符串解码、转换 字符串截取 字符串汉字处理 字符串 Mac地址 字符串进制转换

  • 2020-09-30字符串

    day8-字符串 字符串的操作 in 和 not in字符串1 in 字符串2 - 判断字符串1是否是字符串...

网友评论

      本文标题:字符串

      本文链接:https://www.haomeiwen.com/subject/kjjbtqtx.html