<C> 操作字符串的函数

一.strlen

1.头文件:#include<string.h>

2.返回值:(无符号int)字符串长度

3.作用:计算字符串的长度

4.与sizeof的区分:sizeof是求大小的 这里用一道例题来说明

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 int main()
 5 {
 6     char str1[] = "abcde";
 7     int a = strlen(str1); //5
 8     int b = sizeof(str1); //6
 9
10     char* str2 = "abcde";
11     int c = strlen(str2); //5
12     int d = sizeof(str2); //4 在32位操作系统中 指针的大小固定就是4
13
14     return 0;
15 }

5.长度函数输出实现练习

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 size_t MyStrlen(char* str);
 5
 6 int main()
 7 {
 8     char str[] = "abcd";
 9     int a = MyStrlen(str);
10
11     printf("%d\n",a);
12     return 0;
13 }
14
15 size_t MyStrlen(char* str)
16 {
17     size_t count = 0;
18     if(*str == NULL)
19     {
20         return -1;
21     }
22
23     while(*str != ‘\0‘)
24     {
25         count ++;
26         *str ++;
27     }
28
29     return count;
30 }

注:size_t是无符号int类型

二.strcpy(有点不安全)

1.头文件:#include<string.h>

2.返回值:目标字符串的首地址

3.使用方法:strcpy(目标,源);

例:

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 int main()
 5 {
 6     char* str = "abcd";
 7     char str1[5];
 8     char* p = strcpy(str1,str);
 9
10     printf("%s\n",p);
11     return 0;
12 }

需要注意的是:在定义目标字符串的时候 所给的空间应该是足够大的 不够大的话会崩 目标一定要大于等于源!!!

4.作用:将第二个参数(源字符串中的内容)拷贝到第一个(目标数组)中 并且返回目标字符串的首元素地址

5.拷贝函数实现练习

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 char* MyStrcpy(char* str1,const char* str2);
 5
 6 int main()
 7 {
 8     char str1[5]; //不写方括号它就是个变量啊!
 9     char* str2 = "abcd";
10
11     char* p = MyStrcpy(str1,str2);
12
13     printf("%s\n",p);
14     return 0;
15 }
16
17 char* MyStrcpy(char* str1,const char* str2)
18 {
19     char* p = str1;
20
21     if(str1 == NULL || str2 == NULL) //也得判断str1是不是空的啊 因为它也应该是有空间的!
22     {
23         return NULL;
24     }
25     else if(strlen(str1)+1 < strlen(str2)+1)
26     {
27         return NULL;
28     }
29
30     while(*str2 != ‘\0‘)
31     {
32         *str1 ++ = *str2 ++;
33     }
34
35     *str1 = ‘\0‘;
36     return p;
37 }

三.strcpy_s

1.使用方法:strcpy_s(目标,目标空间大小,源);

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 int main()
 5 {
 6     char* str = "abcd";
 7     char str1[5];
 8
 9     strcpy_s(str1,5,str);
10
11     printf("%s\n",str1);
12
13     return 0;
14 }

注:目标空间大小要和前面目标的大小保持一致

2.返回值:(int类型)0代表成功拷贝

四.strncpy

1.使用方法:strncpy(目标,源,拷贝个数);

2.返回值:char*

3.函数实现:

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 char* MyStrncpy(char* str1,const char* str2,int n);
 5
 6 int main()
 7 {
 8     char str1[5];
 9     char* str2 = "abcd";
10     int n = 2;
11
12     char* p = MyStrncpy(str1,str2,n);
13
14     printf("%s\n",p);
15 }
16
17 char* MyStrncpy(char* str1,const char* str2,int n)
18 {
19     char* p = str1;
20     int i;
21
22     if(str1 == NULL || str2 ==NULL)
23     {
24         return NULL;
25     }
26     else if(strlen(str1)+1 < strlen(str2)+1)
27     {
28         return NULL;
29     }
30
31     for(i=0;i<n;i++)
32     {
33         *str1 ++ = *str2 ++;
34     }
35
36     *str1 = ‘\0‘;
37     return p;
38 }

五.strcat

1.使用方法:strcat(目标,源);

2.作用:字符串拼接 把源拼接到目标的后面

3.返回值:char*

4.函数实现:

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 char* MyStrcat(char* str1,const char* str2);
 5
 6 int main()
 7 {
 8     char str1[10] = "abc";
 9     char* str2 = "def";
10
11     char* p = MyStrcat(str1,str2);
12     printf("%s\n",p);
13
14     return 0;
15 }
16
17 char* MyStrcat(char* str1,const char* str2)
18 {
19     char* p = str1;
20
21     if(str1 == NULL || str2 == NULL)
22     {
23         return NULL;
24     }
25
26     while(*str1 != ‘\0‘)
27     {
28         *str1 ++;
29     }
30     while(*str2 != ‘\0‘)
31     {
32         *str1++ = *str2++;
33     }
34     *str1 = ‘\0‘;
35
36     return p;
37 }

六.strcat_s

1.使用方法:strcat_s(目标,源,目标大小);

 1 #include<stdio.h>
 2 #include<string.h>
 3
 4 int main()
 5 {
 6     char str1[10] = "abc";
 7     char* str2 = "abcd";
 8
 9     int p = strcat_s(str1,sizeof(str1),str2);
10     printf("%d\n",p);
11
12     return 0;
13 }

注:剩下的空间应该大于源的空间

2.返回值:(int类型) 0代表拼接成功

原文地址:https://www.cnblogs.com/Aaaaaalei0612/p/8732798.html

时间: 2024-08-29 06:48:38

<C> 操作字符串的函数的相关文章

javascript基础数组,字符串的操作和冒泡函数等

 数组 var arr = new Array(2,1,5,6,7,4,9); var arr2 = Array(1,2,"33"); //省略new来创建数组 var arr3 = [1,2,"33"]; //通过常量来创建数组 Math.random(); //0~1之间任意的数. for(var i in arr){document.write(arr[i]+" ");} //另一种遍历arr的方式.这个方法要比for循环效率高 1.栈结构

面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”. 一.需要分析 1.输入为一个字符串和字节数,输出为按字节截取的字符串-------------->按照字节[byte]截取操作字符串,先将String转换成byte类型 .2.汉字不可以截半----------------------------------

数据库及表、列的操作,常用函数

数据库及表.列的操作,常用函数 一.数据库的建立 格式:CREATE DATABASE "数据库文件名 " 修改数据库 格式:ALTER DATABASE "数据库文件名"{} 删除数据库 DROP DATABASE "数据库文件名" 二.建立表的结构 注释:下划线表示可有可无 1.CREATE TABLE "数据库名"."表名" (  列名 数据类型 null/not null primary,    列

几个常见字符串处理函数的实现原理

字符串是一种常见的数据结构,对字符串的处理又可以十分灵活,所以在实际开发,尤其是非数值处理中,字符串的应用非常广泛.虽然很多字符串操作都封装在了函数库里,应用程序可以直接通过调用库函数来实现字符串处理,然而对于开发者而言,若能了解其底层实现原理,对于应用编程而言还是大有裨益的. 这篇文章主要介绍几种常用的字符串处理函数的实现原理. 一.strlen函数 strlen函数:计算字符串的实际长度,不包括'\0'. 算法:从第一个字符开始扫描,直到遇见第一个'\0',停止扫描,返回字符串长度. 代码如

004 Python 文件操作 字典 自定义函数

# Python 3 文件操作 字典 自定义函数 ● python 文档 官方英文文档 https://docs.python.org/3/ 汉化版文档 http://python.usyiyi.cn/ ● open() 返回一个文件句柄 参数1:文件地址,绝对地址,或者相对地址 参数2:文件打开的方式 rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278) w 以写方式打开, a 以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+ 以读写模式打开 w+ 以读写模

JavaScript中字符串分割函数split用法实例

这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaScript中字符串分割函数split用法.分享给大家供大家参考.具体如下: 先来看下面这段代码: <script type="text/javascript"> var str="How are you doing today?" document.write

Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那个功能. =find(".",a2)返回在数字中字符(小数点)的位置. 具体公式如下:字符(小数点)前三位=MID(A2,FIND(".",A2)-3,3) 字符(小数点)后三个=MID(A2,FIND(".",A2)+1,3) 字符(小数点)前面的

C#比较字符串及字符串常用函数

C#比较字符串及字符串常用函数示例2007年08月26日 星期日 下午 02:29用C#比较字符串有多种方法,如: 1. string.Compare(x,y);2. string.Equals(x,y) ; 如果要不区分大小写进行比较,则对应为:string.Compare(x,y);string.Equals(x,y); 注:string.Compare比较结果的含义: 值含义 小于零x 小于 y. 或 x 为 空引用(在 Visual Basic 中为 Nothing). 零x 等于 y.

第二天,导出文件sql,查询,视图view,聚合函数,反模式,字符串处理函数

//把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql CREATE TABLE stud( id INT PRIMARY KEY, NAME VARCHAR(32) NOT NULL, score NUMERIC(4,1));//把所有名字都设成"Mike"了UPDATE stud SET NAME="Mike" //只设置分数>=70的记录的NameUPDATE stud