详细解读C++char类型函数

简介: 详细解读C++char类型函数

1.0 字符串复制

1.1 strcpy() 完全复制

原型:char strcpy(char dest, char src);

功能:把从src地址开始且含有 ‘\0’结束符的字符串复制到以dest开始的地址空间

返回指向dest的指针

说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

1 int main()

2 {

3 char src【】="abcde";

4 char dest【100】;

5 strcpy(dest,src);

6 printf("%s",dest);

7 //输出] abcde

8 }

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字符,会导致输出会有乱码

1 int main()

2 {

3 char src【】="SWT is so great! We should % him everyday.";

4 char dest【100】;

5

6 memset(dest,0,sizeof(dest));

7 strncpy(dest,src,10);

8 printf("%s\n",dest);

9 //输出]SWT is so

10

11 memset(dest,0,sizeof(dest));

12 strncpy(dest,src,sizeof(src));

13 printf("%s\n",dest);

14 //输出]SWT is so great! We should % him everyday.

15

16 memset(dest,0,sizeof(dest));

17 strncpy(dest,src,sizeof(dest));

18 printf("%s\n",dest);

19 //输出]SWT is so great! We should % him everyday.

20

21 char des【10】;

22 memset(des,0,sizeof(des));

23 strncpy(des,src,sizeof(src));

24 printf("%s\n",des);

25 //exe停止工作

26 }

2.0 字符串合并

2.1 strcat() 完全合并

原型: char strcat(char dest, char src);

功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的 ‘\0’)并添加 ‘\0’

返回指向dest的指针

说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

1 int main()

2 {

3 char src【】="OI!";

4 char dest【】="We like ";

5 strcat(dest,src);

6 printf("%s",dest);

7 //输出]We like OI!

8 }

2.2 strncat() 部分合并

原型: char strncat(char dest, char src, int n);

功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的 ‘\0’)并添加 ‘\0’

返回指向dest的指针

说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

1 int main()

2 {

3 char src【】="Please login in here!#$%@$@%@#$@%";

4 char dest【】="Welcome to the largest talking room of SLYZ! ";

5 strncat(dest,src,21);

6 printf("%s",dest);

7 //输出]Welcome to the largest talking room of SLYZ! Please login in here!

8 }

3.0 字符串查找

3.1 strchr() 查找字符

原型: char strchr(char s, char c);

功能: 查找字符串s中首次出现字符c的位置

说明: 返回首次出现c的位置的指针,如果s中不存在c则返回NULL

1 int main()

2 {

3 char src【】="Can you find some thing?";

4 int t=strchr(src,'?')-src;

5 printf("%d",t);

6 //输出]23

7 }

3.2 strchr() 查找字符串

原型: char strstr(char haystack, char needle);

功能: 从字符串haystack中寻找needle第一次出现的位置(不比较结束符”\0”)

说明: 返回指向第一次出现needle位置的指针,如果没找到则返回NULL

1 int main()

2 {

3 char src【】="Can you find some thing?";

4 int t=strstr(src,"thing")-src;

5 printf("%d",t);

6 //输出]18

7 }

4.0 字符串比较

4.1 strcmp() 区分大小写

原型: int strcmp(char s1, char s2);

功能: 比较字符串s1和s2,区分大小写

说明: 当s1 < s2时,返回值<0;

??? 当s1 = s2时,返回值=0;

??? 当s1 > s2时,返回值>0。

1 int main()

2 {

3 char src【】="Hello!";

4 char dest【】="hello!";

5 if (!strcmp(src,dest)) printf("SAME");

6 else printf("DIFFERENT");

7 //输出]DIFFERENT

8 }

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

原型: int stricmp(char s1, char s2);

功能: 比较字符串s1和s2,但不区分字母的大小写

说明: 当s1 < s2时,返回值<0;

??? 当s1 = s2时,返回值=0;

??? 当s1 > s2时,返回值>0。

1 int main()

2 {

3 char src【】="Hello!";

4 char dest【】="hello!";

5 if (!stricmp(src,dest)) printf("SAME");

6 else printf("DIFFERENT");

7 //输出]SAME

8 }

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

原型: int strncmp(char s1, char s2, int n);

功能: 比较字符串s1和s2的前n个字符

说明: 当s1 < s2时,返回值<0;

??? 当s1 = s2时,返回值=0;

??? 当s1 > s2时,返回值>0。

1 int main()

2 {

3 char src【】="A APPLE A DAY.";

4 char dest【】="a apple a day.";

5 if (strncmp(src,dest,8)==0) printf("SAME");

6 else printf("DIFFERENT");

7 //输出]DIFFERENT

8 }

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

原型: int strnicmp(char s1, char s2, int n);

功能: 比较字符串s1和s2的前n个字符但不区分大小写

说明: 当s1 < s2时,返回值<0;

??? 当s1 = s2时,返回值=0;

??? 当s1 > s2时,返回值>0。

1 int main()

2 {

3 char src【】="A APPLE A DAY.";

4 char dest【】="a apple a day.";

5 if (strnicmp(src,dest,8)==0) printf("SAME");

6 else printf("DIFFERENT");

7 //输出]SAME

8 }//代码效果参考:http://www.ezhiqi.com/bx/art_3641.html

5.0 字符串转化

5.1 strupr() 小写转大写

原型: char strupr(char s);

功能: 将字符串s转换为大写形式

说明: 只转换s中出现的小写字母,不改变其它字符

返回指向s的指针

1 int main()

2 {

3 char s【】="Let's % SWT together!";

4 strupr(s);

5 printf("%s",s);

6 //输出]LET'S % SWT TOGETHER!

7 }

5.2 strlwr() 大写转小写

原型: char strlwr(char s);

功能: 将字符串s转换为小写形式

说明: 只转换s中出现的大写字母,不改变其它字符

返回指向s的指针

1 int main()

2 {

3 char s【】="Let's % SWT together!";

4 strlwr(s);

5 printf("%s",s);

6 //输出]let's % swt together!

7 }

5.3 strrev() 字符串倒置

原型: char strrev(char* s);

功能: 把字符串s的所有字符的顺序颠倒过来(不包括空字符”\0”)

说明: 返回指向颠倒顺序后的字符串指针

1 int main()

2 {

3 char s【】="!uoy kcor lliw eW";

4 strrev(s);

5 printf("%s<

相关文章
|
9天前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
23 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
2天前
|
存储 编译器 程序员
C++类型参数化
【10月更文挑战第1天】在 C++ 中,模板是实现类型参数化的主要工具,用于编写能处理多种数据类型的代码。模板分为函数模板和类模板。函数模板以 `template` 关键字定义,允许使用任意类型参数 `T`,并在调用时自动推导具体类型。类模板则定义泛型类,如动态数组,可在实例化时指定具体类型。模板还支持特化,为特定类型提供定制实现。模板在编译时实例化,需放置在头文件中以确保编译器可见。
22 11
|
8天前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
13 3
|
2月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
17 1
|
2月前
|
C++
c++常见函数及技巧
C++编程中的一些常见函数和技巧,包括生成随机数的方法、制表技巧、获取数字的个位、十位、百位数的方法、字符串命名技巧、避免代码修改错误的技巧、暂停和等待用户信号的技巧、清屏命令、以及避免编译错误和逻辑错误的建议。
20 6
|
2月前
|
存储 C++
c++学习笔记05 函数
C++函数使用的详细学习笔记05,包括函数的基本格式、值传递、函数声明、以及如何在不同文件中组织函数代码的示例和技巧。
29 0
c++学习笔记05 函数
|
2月前
|
存储 自然语言处理 编译器
C语言中的char类型
C语言中的char类型
|
29天前
|
安全 程序员 C语言
C++(四)类型强转
本文详细介绍了C++中的四种类型强制转换:`static_cast`、`reinterpret_cast`、`const_cast`和`dynamic_cast`。每种转换都有其特定用途和适用场景,如`static_cast`用于相关类型间的显式转换,`reinterpret_cast`用于低层内存布局操作,`const_cast`用于添加或移除`const`限定符,而`dynamic_cast`则用于运行时的类型检查和转换。通过具体示例展示了如何正确使用这四种转换操作符,帮助开发者更好地理解和掌握C++中的类型转换机制。
|
2月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
29 0
|
2月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
32 0
下一篇
无影云桌面