字符串

作者: silasjs | 来源:发表于2019-01-28 17:25 被阅读2次

[toc]

字符串

定义

字符串的本质就是一个字符数组。

  • 注意:
    • 字符串变量和普通的字符数组有一定的区别
    • 字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素比字符数组的元素个数多一个\0
    • 字符串以\0结尾,没有\0就不是字符串,而是字符数组
char str[] = "dfasf"; 

初始化

char str1[] = "sdfa";
char str2[] = {'s', 'd', 'f', 'a', '\0'};

部分初始化中,没有被赋值的元素默认是0。\0对应的ASCII值为0

char str3[10] = {'s', 'a', 'f', 'a', 'r'};
char str4[3] = {'s', 'a', 'f'};//该方式不是字符串,而是字符数组,因为没有\0
char str5[] = {'s', 'a', 'f'};

输出

  • printf()中使用%s
    • 优点:可以自定义格式化输出的字符串
    • 弊端:如果想换行,必须加上\0
  • puts()
    • 优点:可以自动换行
    • 弊端:不可以自定义格式,只能原样输出
printf("str = %s\n", str);
puts(str);

%s的原理:从传入的“地址”开始逐个取出,直到遇到“\0”为止。

输入

  1. scanf
    • scanf接收字符串,会以空格、tab、回车作为结束符号,也就是说利用scanf接收字符串时,字符串中不能出现空格、tab、回车
char buf1[10];
scanf("%s", buf1);
  1. gets
    • 使用gets接收字符串,系统会提示我们正在使用一个不安全的方法接收字符。因为输入的字符串元素个数可能会越界。
    • 优点:可以在字符串中输入空格、tab
char buf2[10];
gets(buf2);

常用方法

拼接

char str1[10] = "safari";
char str2[10] = "cool";

strcat(str1, str2);

size_t catSize = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1;
strncat(str1, str2, catSize);
  1. strcat(dest, src)
    • dest:目标
    • src:源
    • 将src中的数据拼接到dest后面
    • 注意:dest必须是一个数组,并且数组的长度必须大于拼接之后的长度
  2. strncat(char *, const char *, size_t)
    • char *:目标
    • const char *:源
    • size_t:需要拼接的个数

拷贝

strcpy(str1, str2);

size_t cpySize = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1;
strncpy(str1, str2, cpySize);
  1. strcpy(char *, const char *)
    • char *:目标
    • const char *:源
    • strcpy函数会将源的数据拷贝到目标中,并且会覆盖掉目标中原有的数据。
    • 目标的容积必须能够存放源的数据。
  2. strncpy(char *, const char *, size_t)
    • char *:目标
    • const char *:源
    • size_t:需要拼接的个数
    • 注意:拷贝操作是逐个替换,拷贝了几个就替换几个

比较

int res = strcmp(str1, str2);
printf("res = %i\n, res");

strcmp会对传入的字符串进行比较,比较完毕后会返回一个整型的值给我们

原理:取出字符串中的每一个字符进行逐个比较,如果发现不相等就不会继续往下比较

  1. 如果该值等于0,那么证明两个字符串相等
  2. 如果该值大于0,那么就是升序的,str1小于str2
  3. 如果该值小于0,那么就是降序的,str1大于str2

相关文章

  • 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/rstzjqtx.html