前几天测试,本来想用char自带的函数
然而发现自己并不是很会。。。

1.0 复制

1.1 strcpy

原型:char* strcpy(char* dest, char* src);
功能:把从src地址开始且含有 ‘\0’结束符的字符串复制到以dest开始的地址空间
返回指向dest的指针
说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="abcde";char dest[100];strcpy(dest,src);printf("%s",dest);//输出>> abcde
}

1.2 strncpy(部分复制)

原型: char* strncpy(char* dest, char* src, int size_tn);
功能:将字符串src中最多n个字符复制到字符数组dest中(ta并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针
说明:如果n > dest串长度,dest栈空间溢出产生崩溃异常

  • src串长度<=dest串长度
    如果n=(0, src串长度),src的前n个字符复制到dest中
    但是由于没有NULL字符,所以直接访问dest串会发生栈溢出的异常情况
    这时,一般建议采取memset将dest的全部元素用null填充

    • 如果n = src串长度,与strcpy一致
    • 如果n = dest串长度,[0,src串长度]处存放于desk字串,(src串长度, dest串长度]处存放NULL
  • src串长度>dest串长度
    • 如果n =dest串长度,则dest串没有NULL字符,会导致输出会有乱码
#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="SWT is so great! We should % him everyday.";char dest[100];memset(dest,0,sizeof(dest));strncpy(dest,src,10);printf("%s\n",dest);//输出>>SWT is so memset(dest,0,sizeof(dest));strncpy(dest,src,sizeof(src));printf("%s\n",dest);//输出>>SWT is so great! We should % him everyday.memset(dest,0,sizeof(dest));strncpy(dest,src,sizeof(dest));printf("%s\n",dest);//输出>>SWT is so great! We should % him everyday.char des[10];memset(des,0,sizeof(des));strncpy(des,src,sizeof(src));printf("%s\n",des);//exe停止工作
}

2.0 合并

2.1 strcat

原型: char* strcat(char* dest, char* src);
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的 ‘\0’)并添加 ‘\0’
返回指向dest的指针
说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="OI!";char dest[]="We like ";strcat(dest,src);printf("%s",dest);//输出>>We like OI!
}

2.2 strncat(部分合并)

原型: char* strncat(char* dest, char* src, int n);
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的 ‘\0’)并添加 ‘\0’
返回指向dest的指针
说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="Please login in here!#$%@$@%@#$@%";char dest[]="Welcome to the largest talking room of SLYZ! ";strncat(dest,src,21);printf("%s",dest);//输出>>Welcome to the largest talking room of SLYZ! Please login in here!
}

3.0 查找

3.1 strchr(查找字符)

原型: char* strchr(char* s, char c);
功能: 查找字符串s中首次出现字符c的位置
说明: 返回首次出现c的位置的指针,如果s中不存在c则返回NULL

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="Can you find some thing?";int t=strchr(src,'?')-src;printf("%d",t);//输出>>23
} 

3.2 strchr(查找字符串)

原型: char* strstr(char* haystack, char* needle);
功能: 从字符串haystack中寻找needle第一次出现的位置(不比较结束符”\0”)
说明: 返回指向第一次出现needle位置的指针,如果没找到则返回NULL

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="Can you find some thing?";int t=strstr(src,"thing")-src;printf("%d",t);//输出>>18
}

4.0 比较

4.1 strcmp(区分大小写)

原型: int strcmp(char* s1, char* s2);
功能: 比较字符串s1和s2,区分大小写
说明: 当s1 < s2时,返回值<0;
    当s1 = s2时,返回值=0;
    当s1 > s2时,返回值>0

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="Hello!";char dest[]="hello!";if (!strcmp(src,dest)) printf("SAME");else printf("DIFFERENT");//输出>>DIFFERENT
}

4.2 stricmp(不区分字母的大小写)

原型: int stricmp(char* s1, char* s2);
功能: 比较字符串s1和s2,但不区分字母的大小写
说明: 当s1 < s2时,返回值<0;
    当s1 = s2时,返回值=0;
    当s1 > s2时,返回值>0

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="Hello!";char dest[]="hello!";if (!stricmp(src,dest)) printf("SAME");else printf("DIFFERENT");//输出>>SAME
}

4.3 strncmp (部分比较,区分字母的大小写)

原型: int strncmp(char* s1, char* s2, int n);
功能: 比较字符串s1和s2的前n个字符
说明: 当s1 < s2时,返回值<0;
    当s1 = s2时,返回值=0;
    当s1 > s2时,返回值>0
   

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="A APPLE A DAY.";char dest[]="a apple a day.";if (strncmp(src,dest,8)==0) printf("SAME");else printf("DIFFERENT");//输出>>DIFFERENT
} 

4.4 strnicmp (部分比较,不区分字母的大小写)

原型: int strnicmp(char* s1, char* s2, int n);
功能: 比较字符串s1和s2的前n个字符但不区分大小写
说明: 当s1 < s2时,返回值<0;
    当s1 = s2时,返回值=0;
    当s1 > s2时,返回值>0

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char src[]="A APPLE A DAY.";char dest[]="a apple a day.";if (strnicmp(src,dest,8)==0) printf("SAME");else printf("DIFFERENT");//输出>>SAME
} 

5.0 转化

5.1 strupr(小写转大写)

原型: char* strupr(char* s);
功能: 将字符串s转换为大写形式
说明: 只转换s中出现的小写字母,不改变其它字符
返回指向s的指针

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char s[]="Let's % SWT together!";strupr(s);printf("%s",s);//输出>>LET'S % SWT TOGETHER!
}

5.1 strlwr(大写转小写)

原型: char* strlwr(char* s);
功能: 将字符串s转换为小写形式
说明: 只转换s中出现的大写字母,不改变其它字符
返回指向s的指针

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char s[]="Let's % SWT together!";strlwr(s);printf("%s",s);//输出>>let's % swt together!
}

5.3 strrev(倒置)

原型: char* strrev(char* s);
功能: 把字符串s的所有字符的顺序颠倒过来(不包括空字符”\0”)
说明: 返回指向颠倒顺序后的字符串指针

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char s[]="!uoy kcor lliw eW";strrev(s);printf("%s",s);//输出>>We will rock you!
}

5.4 strset(设置)

原型: char* strset(char* s, char c);
功能: 把字符串s中的所有字符都设置成字符c
说明: 返回指向s的指针

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int main()
{char s[]="(!@&*#$^*@#&^(!@#*))";strset(s,'%');printf("%s",s);//输出>>%%%%%%%%%%%%%%%%%%%%
}

char类型函数(C++入门?)相关推荐

  1. 常用char 类型函数的介绍

    昨天学习了C语言的几种常用的变量类型,今天整理一下两对常用的char类型输入输出的函数,与大家共同学习,刚开始接触,需要学习的地方很多,欢迎感兴趣的同学交流指导. 首先我们来看第一对getchar() ...

  2. C语言如何返回char类型,函数返回char类型数组,调用 函数后如何接收值?

    我现在刚在学C语言,今天想要实现一个功能: 用C语言读取一个文件的指定行,(如读取a.log文件的3--5行),现在实现了读取函数, 但在main函数调用时不知道怎么接收返回的值. 代码如下: #in ...

  3. char类型怎么输入 c语言_C语言零基础入门到精通视频课程(精品)

    C语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  4. Matlab出现未定义与‘char’类型的输入参数想对应的函数‘xxx‘

    文章目录 1. 背景描述 2. 原因 3. 解决办法 1. 背景描述 在 matlab 上使用基于 matlab 二次开发的 APP,有时候会出现"未定义与'char'类型的输入参数想对应的 ...

  5. char类型怎么输入 c语言_c语言入门(一)

    知识点1[写代码的过程] 编辑器:程序员写代码的过程(记事本.vc6.0.vim)(让程序员看懂) 编译器:查看代码的语法错误,生成汇编语言. 汇编器:将生成好汇编语言 生成 二进制语言(目标文件) ...

  6. 关于C语言函数返回char *类型的一些问题

    @关于C语言函数返回char *类型的一些问题TOC 关于C语言函数返回char *类型的一些问题 以下是我在写C语言中返回值类型为char *函数时遇到的一些问题,在参考了博客:https://bl ...

  7. char 类型的数组,在函数内能最大能定义多大?

    因为进程的虚拟的地址空间是具体划分的,栈的大小是固定的,可以通过 ulimit -a 命令来看. 栈的大小是 8M ,所以 char 类型的数组 不能超过这个大小,否则就会 segment fault ...

  8. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

  9. 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序

    1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...

最新文章

  1. tomcat自启动问题 jsvc的 使用
  2. 软考-信息系统项目管理师-项目组合管理
  3. Roundcube Webmail信息泄露漏洞(CVE-2015-5383)
  4. android+sim卡短信,android 信息(mms)开发(七)-- sim卡短信
  5. 云数据库时代已来,程序员该如何出击?
  6. Error in mounted hook: “TypeError: Cannot read property ‘init‘ of undefined“
  7. 神州数码交换机建立VSF与删除VSF
  8. 转行3D建模,C4D与3ds Max哪个更好入门就业
  9. 模拟汽车速度控制系统的设计 微机原理课程设计
  10. Debian安装和配置CA证书
  11. 中药槲皮素-AKT1与木犀草素IL6/VEGFA直接结合抑制骨关节炎
  12. word文档页码从正文页开始编号
  13. Java(十三)集合类(2)
  14. 姓氏 (C++)简单贪心
  15. 微信dat文件批量解密
  16. mt7601驱动使用(二)
  17. StartDT Hackathon | 技术小白独立部署DataSimba,需要多久?
  18. python特殊符号怎么打_Python显示特殊字符
  19. Docker在线文档收集
  20. 2021五一放假几天,如何用桌面日历便签做日程安排

热门文章

  1. 莆田天气html代码,福建天气预报,福建莆田天气预报
  2. 简说集成电路IC产品
  3. 科沃斯t20和t10区别对比评测选哪个好
  4. 想知道有声读物应该怎么做吗
  5. 神经网络计算机,什么是神经网络计算机?
  6. 计算机学院自强标兵网络投票,2015年度计算机学院自强大学生标兵答辩会顺利举行...
  7. Python实现节假日查询
  8. 【网页处理与文本分析】影片票房任务
  9. 【CF1342F】 Make It Ascending
  10. 高层次人才一站式服务平台系统解决方案,人才综合服务平台搭建