当前位置: 首页 > news >正文

C语言----字符串

字符串

第一种定义

利用字符数组 +双引号的方式定义字符串

char str1[4]="abc";

printf("%s\n",str1);

细节1:

在底层,实际存储的时候,c语言还是会帮我们把字符串"abc"转换成字符数组进行保存,并且在末尾还要再加上'\0‘

{'a','b','c','\0'};

细节2:

数组的长度,要么不写,如果要写的话,记得要把结束标记的空间给预留出来

细节3:

字符数组 +双引号的方式定义字符串,内容是可以发生改变的

第二种定义

利用指针 +双引号的方式定义字符串

char* str2 = "abc";

printf("%s\n",str2);

细节1:

在底层,实际存储的时候,c语言还是会帮我们把字符串"abcd"转换成字符数组进行保存,并且在末尾还要再加上'\0'

{'a','b','c','d','\0‘};

细节2:

利用指针 +双引号的方式定义字符串,会把底层的字符数组放在只读常量区

只读常量区特点:

内容不可以修改的

里面定义的字符串是可以复用的

复用就是在定义时会查找在只读常量区内有没有这个字符串,若有则复用

键盘录入字符串并遍历

#include<stdio.h>
int main()
{//因为要键盘录入键盘录入,所以不可以用指针定义字符串char str[100];//定义一个指针p来接收str的地址char* p = str;printf("请输入一段字符串(长度小于100):");scanf("%s",str);printf("录入的字符串为:%s\n",str); //循环判断str内的每一个字符while(1){//定义变量c来接收p中的元素//数组的地址其实就是数组中第一个元素的地址char c = *p;//当c等于结束符时说明字符串已经遍历完成if(c == '\0'){//跳出循环break;}//打印当前元素printf("%c\n",c);//指针 p 向后移动一个位置,指向下一个字符p++;}return 0;
}
​

遍历姓名

#include<stdio.h>
int main()
{//方法一:定义一个二维数组来存放5人的名字/*char strArr[5][10] = {"张三","李四","王五","马六","徐七"};int i;for(i=0;i<5;i++){printf("%s\n",strArr[i]);   }*///方法二:定义一个指针数组来存放5人的名字char* p[5] = {"张三","李四","王五","马六","徐七"};int i;for(i=0;i<5;i++){printf("%s\n",p[i]);    }return 0;
}

string常用函数

使用函数需要导入头文件

#include<string.h>

  1. strlen:获取字符串的长度

    统计长度时不计算结束符,且中文占2字节

  2. strcat:拼接两个字符串

    细节1:把第二个字符串中全部的内容,拷贝到第一个字符串的未尾,第二个字符串不修改 前提1:第一个字符串是可以被修政的 前提2:第一个字符串中剩余的空间可以容纳拼接的字符串

  3. strcpy:复制字符串

    细节1:把第二个字符串中全部的内容,拷贝到第一个字符串中,把第一个字符串里面原有的内容给覆盖了 前提1:第一个字符串是可以被修改的 前提2:第一个字符串中空间可以容纳第二个字符串的完整内容

  4. strcmp:比较两个字符串

    顺序内容完全 一样返回0,不一样返回非0

  5. strlwr:将字符串变成小写

    只可以修改英文大小写

  6. strupr:将字符串变成大写

    只可以修改英文大小写

示例代码
#include<stdio.h>
#include<string.h>
int main()
{char* str1 = "abc";char str2[100] = "Ab你";char str3[] = {'e','f','g','h','\0'};
​strlen计算字符串长度//int len1 = strlen(str1);//int len2 = strlen(str2);//int len3 = strlen(str3);//printf("%d  %d  %d\n",len1,len2,len3);
​strcat拼接字符串//strcat(str2,str3);//printf("%s\n",str2);//printf("%s\n",str3);
​strcpy复制字符串//strcpy(str2,str3);//printf("%s\n",str2);//printf("%s\n",str3);
​strcmp比较字符串//int test = strcmp(str2,str3);//printf("%d\n",test);
​strlwr小写字符串//strlwr(str2);//printf("%s\n",str2);
​//strupr大写字符串strupr(str2);printf("%s\n",str2);return 0;
}
http://www.lryc.cn/news/419003.html

相关文章:

  • ThreadLocal 详解(三)内存泄露原因,以及强弱引用
  • 【Android面试八股文】说一说Android开发模式之MVC、MVP、MVVM的区别?
  • 多叉树的深度优先遍历(以电话号码的字母组合为例)
  • 【YashanDB数据库】PHP无法通过ODBC连接到数据库
  • C++ | Leetcode C++题解之第326题3的幂
  • Ubuntu20.4上搭建FFMPEG开发环境
  • 谷粒商城实战笔记-144-性能压测-性能监控-堆内存与垃圾回收
  • 大模型综述
  • Python 常用内置函数
  • 什么是大数据?
  • Linux 内核源码分析---资源分配及系统总线
  • C# POST请求 各种实现方法梳理
  • 《MySQL数据库》数据导入、导出、表处理—/—<4>
  • Java I/O (Input/Output)——文件字节流
  • VisionPro二次开发学习笔记4-使用C#创建绘图图形
  • 【langchain学习】使用JsonOutputParser让大模型生成结构化JSON数据
  • 【学习笔记】Matlab和python双语言的学习(最大最小化规划)
  • 基于SpringBoot的Redis开发实战教程
  • mysql 分区操作
  • [网鼎杯 2018]Comment
  • LVS详解
  • Yolo-World初步使用
  • Navicat Premium使用
  • LLC数字控制TMS320F28034,4-DSP的epwm配置介绍
  • MongoDB学习记录
  • vlunstack-2(复现红日安全-ATT CK实战)
  • 【生信入门】预览快速体验Linux-重生之小明闯Linux
  • 用.net core简易搭建webapi托管到IIS
  • 【计算机网络---OSI七层模型】
  • Error updating database. Cause: org.apache.shiro.UnavailableSecurity