strlen(); strcpy(); strcat(); strcmp() ---笔记

时间:2022-09-04 12:37:31

指针小知识点:

int a =10;

int *p=&a;

int *q=p;        //p中保存的是a的地址

int *q=p;       //将p的值赋给q 作用是让q也指向a


strlen( ); 求字符串的长度

strcpy( ); 复制字符串

strcat( ); 连接字符串

strcmp( ); 字符串大小的比较


 typedef   unsigned int  size_t

 size_t   my_strlen  (const char *str)            // strlen()
{
assert(str!=NULL);
int len=;
while(*str != '\0')
{
len++;
str++;
}
return len;
} //不使用中间变量 利用递归;
size_t my_strlen(const char *str)
{
assert(str!=NULL);
if (*str=='\0')
return ;
else
return my_strlen(++str)+;
}

 char* my_strcpy(char *dest,const char *src)             //  strcpy()
{
assert(dest!=NULL&&src!=NULL);
char *dest_tmp=dest; //保护参数
const char *src_tmp=src; //类型匹配
while(*src_tmp!='\0')
{
*dest_tmp++=*src_tmp++;
} *dest_tmp='\0';
return dest;
} void main()
{
char s1[];
char *s2 = "abcde";
my_strcpy(s1, s2);
cout<<"s1 = "<<s1<<endl; //abcde //C++输出方式
}
// 或者第三方接受
void main()
{
char s1[];
char *s2 = "abcde";
char *s3= my_strcpy(s1, s2);
cout<<"s3 = "<<s3<<endl; //abcde
}

 char* my_strcat(char *dest,const char *src)               //  strcat()
{
assert(src!=NULL&&dest!=NULL)
char *dest_tmp=dest; //保护参数
const char *src_tmp=src; //类型匹配 while(*dest_tmp!='\0')
dest_tmp++;
while(*src_tmp!='\0')
*dest_tmp++=*src_tmp++;
*dest_tmp='\0';
return dest;
} void main()
{
char s1[] = "abcdef ";
char s2[] = "ghijk ";
char *str1 = my_strcat(s1, s2);
cout<<"s1 = "<<s1<<endl;
cout<<"str1 = "<<str1<<endl; //abcdefghijk //C++输出方式 }

 /*  strcmp(s1,s2);
s1>s2 : 返回1
s1=s2 : 返回0
s1<s2 : 返回-1
*/ int my_strcmp(const char *str1, const char *str2) //strcmp()
{
assert(str1!=NULL && str2!=NULL);
if(*str1=='\0' && *str2=='\0')
return ;
while(*str1!='\0' && *str2!='\0')
{
if(*str1 > *str2)
return ;
else if(*str1 < *str2)
return -;
str1++;
str2++;
}
if(*str1=='\0' && *str2!='\0')
return -;
if(*str1!='\0' && *str2=='\0')
return ;
return ;
} // 或者
int my_strcmp(const char *str1, const char *str2)
{
assert(str1!=NULL && str2!=NULL);
int result = ;
while(*str1!='\0' || *str2!='\0')
{
if( ( result = *str1-*str2 ) != )
break;
str1++;
str2++;
}
if( result > )
result = ;
else if( result < )
result = -;
return result;
}

注意:

1、判断参数的有效性;

(断言) 所传的参数不能为空。

2、若需要返回指针,使用中间变量;

my_strcpy(); my_strcat();

3、确保空间足够

my_strcpy(); my_strcat();

4、参数保护 保证参数不被函数内部所修改

strlen(); strcpy(); strcat(); strcmp() ---笔记的更多相关文章

  1. 实现strlen&comma;strcpy&comma;strcat&comma;strcmp同功能的函数stringLength&comma;stringCopy&comma;stringCatch&comma;stringCompare

    #import <Foundation/Foundation.h> /* 求字符串长度 */ int stringLength(char arr[]); /* 复制字符串 将arr1 复制 ...

  2. 写出完整版的strcpy函数及其他如:strcat&comma;strcmp&comma;strstr的函数实现

    (---牛客网中刷题---)写出完整版的strcpy函数 如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案: 2分 1 2 3 4 void strcpy( char *st ...

  3. 实现字符串函数,strlen&lpar;&rpar;&comma;strcpy&lpar;&rpar;&comma;strcmp&lpar;&rpar;&comma;strcat&lpar;&rpar;

    实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...

  4. 不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)

    不使用库函数.自己编写的(strlen.strcpy.strcmp.strcat.memcmp.memcpy.memmove) //求字符串长度的函数 int my_strlen(const char ...

  5. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  6. C 实现strcmp&comma;strcpy&comma;strcat函数

    基于C语言的strcmp,strcpy,strcat函数的实现.C语言是一个程序猿的基础,一定要重视. char* strcat ( char * dst , const char * src ) { ...

  7. 字符串操作函数&lt&semi;string&period;h&gt&semi;相关函数strcpy&comma;strcat&comma;等源码。

    首先说一下源码到底在哪里找. 我们在文件中包含<cstring>时,如果点击右键打开文档, 会打开cstring,我们会发现路径为: D:\Program Files\visual stu ...

  8. 字符串处理strcpy strcat函数的用法

    C语言函数字符串处理strcpy strcat函数的用法: 1)strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串 ...

  9. 逆向 string&period;h 函数库 memset、strcpy、strcmp 函数

    memset 函数 函数原型:void *memset(void *str, int c, size_t n) 主要功能:复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符 ...

随机推荐

  1. App&period;config&OpenCurlyDoubleQuote;配置系统未能初始化” 异常解决 C&num;

    System.Configuration.ConfigurationManager.AppSettings["user"]; 时出现“配置系统未能初始化” 错误 解决办法: 如果配 ...

  2. Using Stored Programs with MySQLdb

    http://flylib.com/books/en/1.142.1.125/1/ Using Stored Programs with MySQLdb The techniques for call ...

  3. CF 337D Book of Evil 树形DP 好题

    Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n se ...

  4. Linux下l2tp客户端xl2tpd的安装配置

    1.下载xl2tp http://pkgs.org/search/?query=xl2tp&type=smart选择相应的版本进行下载 2.安装xl2tp和ppp yum install xl ...

  5. 多台计算机之间的ssh无密钥登录

    在很多分布式系统中,我们最常遇到的一个问题是,需要在服务器集群上保证多台机器之间的SSH无密钥登录.以Hadoop为例,为了方便,我们需要在master和slaves之间配置密钥登录,这样我们启动Ha ...

  6. NDK GDB 中打印vector &comma; vector&lt&semi;vector &lt&semi;&gt&semi; &gt&semi;

    在android上进行native开发的时候,我们需要用NDK-GDB 对native code进行调试,其中很麻烦的是,我使用的NDK版本是4.0,该版本还不支持用NDK-GDB直接打印vector ...

  7. 什么是CALayer

    一.什么是CALayer * 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. * 其实UIView之所以 ...

  8. 应用程序写Xml文档

    主要用到CreateElement.CreateTextNode.CreateComment.AppendChild.InsertAfter方法 代码如下: XmlDocument document ...

  9. zabbix的Java API(一)

    上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了. 于是我在zabbix网站各种找,终于在下面网址找到了: htt ...

  10. 微信小程序发红包

    背景: 近期一个朋友公司要做活动,活动放在小程序上.小程序开发倒是不难,不过要使用小程序给微信用户发红包,这个就有点麻烦 确定模式: 小程序目前没有发红包接口,要实现的话,只能是模拟红包,即小程序上做 ...