2021-05-09,字符串使用方法笔记

学习目标:

字符串的  常用API ,使用方法



学习内容:几种常用的函数调用接口(API)

                                                              1.和整型数一样

字符串就是字符数组,定义的几种格式2.和整形数组像

                                                         3.一般用char *p = "Hello"

char* pst="Hello World";
printf("%s",pst);

sizeof和strlen的区别:sizeof计算整型数,因  字符串数组有隐藏'\0',需用strlen机选帧数有效数据据大小。

char*a[3]="abc";
printf("a数组大小:%d",sizeof(a));//输出为4,包含'\0'
peintf("a数组大小:%s",strlen(a));//输出为3,strlen遇'\0'自动终止。计算的是有效数字。

                     

                           a.puts()                  

1、输出字符串:b.printf("%d",p)

2、获取字符串:a.gets   需要检测内存是否合法(否则容易造成段错误)

                           b.scanf("%s",p)

char *patr;//野指针,没有指向,需要申请malloc型空间,接纳。
patr = (char*)malloc(128);
printf("请输入字符串:\n");
scanf("%s",pstr);//puts(pstr);

3、计算长度:strlen

4、初始化:memset   //(初始化对象;初始化为什么字符;多大)

5、拷贝:a.strcpy;  (A,B)讲B拷贝入A;B可以是字符串“Hello”,也可以是数组

char D[128]={'\0'};
char *strSrc = "拷贝1";
char ret= strcpy(D,strSrc);  (A,B)讲后拷贝前
printf("拷贝结果:%s",ret);

                b.strncpy;语法:char *strncpy(char *destinin, char *source, int maxlen);

char A[128]={'\0'};
memset(A,'\0',sizeof(A)/sizeof(A[0]));//初始化
strncpy(A,"Hello",3);//将字符串前三位拷贝入字符数组A

上面A是数组可以直接用sizeof计算数组大小//指针型直接写128或者strlen计算。(细节)

6、拼接:strcat :strcat(A,B);直接输出就行.

7、比较:strcmp:  strcmp(A,B);A与B做差比较。

char *A="abc";
char *B="abcd";
int ret = strcmp(A,B);//
printf("AB比较结果:%d",ret);//输出为-1.

 if(!strcmp(A,B)==0){printf("两字符一样长\n");}//!为取反,即直接输出比较结果。非0变0,0变非0.

8、查找子字符:strchr:

char *a="zhaoyi";
char b='y';
char *c=NULL;
U = strchr(a,b);//前面为查找的字符串,后为查找的字符,也可以直接'i'.
puts(U);//输出结果为:yi,查找字符并后面字符

函数原型

char *strchr(const char *str, int c)




参数

  • str-- 要被检索的 C 字符串。

  • c-- 在 str 中要搜索的字符。




功能

在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。




返回值 :类型为指针

返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针




头文件

#include <string.h>

9、查找子串:strstr:功能:检索子串在字符串中首次出现的位置

char *strstr(char *str,char* substr);

str参数为 要检索的字符串

sunstr为要检索的字串

返回字符串(返回值类型为char *)中第一次出现字串的substr地址;如果没有检测到字串,返回NULL.

strchr找字符的如'i';strstr找字符串,如‘yi'

10、转为小写的函数:strlwr:功能如名,用法:put(strlwr(A));全部转化为小写

11、转为大写的函数:strupr:功能如名,用法:put(strupr(A));全部转化为大写

12、字符串分割:strtok:字符串的分割,根据标志分割,例如Zhao,Yi,Yi   标志,

strock(需要分割的字符串,分割标志)

char A[] = "Zhao,Yi,Yi";
char *Back;
Back = (char*)malloc(128);
Back = strtok(A,",");
int i = 0;
if(Back!=NULL){
printf("第%d次输出的字符串为:%s\n",i+1,Back);
}
while(1){
i++;
Back = strtok(NULL,",");
if(Back != NULL){
printf("第%d次输出的字符串为:%s\n",i,Back);
}else{
printf("输出字符串完毕\n");
break;
}
}



补充知识,野指针:

A.野指针造成非法内存空间访问,段错误,cmd窗口闪退

B.一旦用malloc,就要注意内存泄漏问题,并且对malloc返回值做判断,是否申请空间失败。(在linux中程序结束后,系统会自动回收malloc这个空间,否则要释放free(p);p=NULL)

char *p;//定义一个指针变量,需要将其'去野化',防止造成非法内存空间,出现段错误,cmd窗口闪退
p = (char*)malloc(128);
if(p=NULL){
printf("申请空间失败\n");
exit(-1);
}else{
  操作函数
}
//释放指针地址
free(p);
p=NULL;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值