图片[1]yxqzC语言中的字符串yxqz小余塘

作者:余小小

日期:2021-10-02

字符串概念

  • 字符串实际上是使用 null 字符 \0 终止的一维字符数组,这里null和\0实际上也叫做字符串的结束符号,表示我一段话到此位置的意思哦

  • 这个 null 字符 \0 要认识是干啥的哦,再其他高级语言中,其实是隐藏了的,叫做结束字符

  • 遇到第一个结束字符,则字符串就取到改区域的的字符,后面的就不会考虑了,可以说结束字符就是一把刀,一刀下去后面的都不要了

下面的声明和初始化创建了一个 yxqz 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 yxqz 的字符数多一个。应为多了一个结束字符

char demo[] = {'y', 'x', 'q', 'z', '\0'};
#include <stdio.h>
​
​
int main() {
   char demo[] = {'y', 'x', 'q', 'z', '\0'};
   int i;
   for (i = 0; i < 4; i++) {
       printf("数组中的元素:%d\n", demo[i]);
  }
   return 0;
}

 

  1. 我用的d来接收,因为我用s接收,我这里会进入到debug模式,暂时不纠结这里,所以能看到值就行了

  2. 所以说,用动态的初始化数组,可以不用规定[]中的值,也可以规定,但是一定要合理,不然装不下就尴尬了

  3. 最好考试的时候,int在前面先定义,虽然写在for循环中,也是可以编译的,但是有一些低级的编译器没法识别汇编有错误

定义字符串

  • 用双引号

  • 不是花括号的对象方式

  • 是动态的方式 ,不用规定空间范围

  • 当然,你规定了空间范围,也是可以的

  • 这里c语言会自动添加结束符的

char yyds[] = "yyds";
char yyds[99] = "yyds";

 

直接定义字符串,也是可以的 ,但是一定要注意,用双引号

#include <stdio.h>
​
int main() {
   char demo[] = {'y', 'x', 'q', 'z', '\0'};
   char yyds[] = "yyds";
   int i;
   for (i = 0; i < 4; i++) {
       printf("数组中的元素:%d\n", demo[i]);
       printf("yyds数组中的元素:%d\n", yyds[i]);
  }
   return 0;
}

 

测试字符串长度

  • 可以看到,手动挡的,会将结束符也算进去

  • 自动挡的,没有将结束符算进去,所以要注意,是不是用到双引号来定义的字符串

int main() {
   char demo[] = {'y', 'x', 'q', 'z', '\0'};
   char yyds[99] = "yyds";
   printf("demo数组长度:%d\n",sizeof(demo) );
   printf("yyds数组长度:%d\n",sizeof(yyds) );
   return 0;
}

 

image-20211201224329084

常用的字符串api

字符串名字,装的是字符串地址值,和数组名字一样哦。

  • strcmp: string compare

  • strcat: string catenate

  • strcpy: string copy

  • strlen: string length

  • strlwr: string lowercase

  • strupr: string upercase

序号 函数 & 目的
1 strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
2 strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。
3 strlen(s1); 返回字符串 s1 的长度。
4 strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
5 strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
6 strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
  • 操作字符串,一定要引入#include <string.h>这个库

#include <stdio.h>
#include <string.h>

int main ()
{
  char str1[14] = "runoob";
  char str2[14] = "google";
  char str3[14];
  int  len ;

  /* 复制 str1 到 str3 */
  strcpy(str3, str1);
  printf("strcpy( str3, str1) : %s\n", str3 );

  /* 连接 str1 和 str2 */
  strcat( str1, str2);
  printf("strcat( str1, str2):   %s\n", str1 );

  /* 连接后,str1 的总长度 */
  len = strlen(str1);
  printf("strlen(str1) : %d\n", len );

  return 0;
}

 

strlen 与 sizeof的区别

  • strlen 是函数,sizeof 是运算操作符,二者得到的结果类型为 size_t,即 unsigned int 类型。

  • sizeof 计算的是变量的大小,不受字符 \0 影响;

  • 而 strlen 计算的是字符串的长度,以 \0 作为长度判定依据。

文章版权声明 1、本网站名称:小余塘
2、本站永久网址:https://www.yxqz.top/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ2457431511进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容