栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

任务二----<string.h>8个函数的自实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

任务二----<string.h>8个函数的自实现

1,strlen

统计字符串的长度但不包括''

int my_strlen(char s[])
{
  int i,len=0;
  for(i=0;s[i]!='';i++)
     len++;
  return len;
}

2,strcmp

两个字符串比较大小s1大于等于小于s2分别输出1,0,-1

int my_strcmp(char s1[],char s2[])
{
  int i;
  for(i=0;;i++)
   {  if(s1[i]>s2[i])
         return 1;
      if(s1[i] 

3,strcpy

将字符串s2的内容复制给s1,s1的长度要大于等于s2;

void my_strcpy(char *p1,char *p2)
{
  
  for(;*p2!='';p1++,p2++)
  {
  *p1=*p2;
  }
  *p1='';    
}

样例

#include
void my_strcpy(char *p1,char *p2)
{
  
  for(;*p2!='';p1++,p2++)
  {
  *p1=*p2;
  }
  *p1='';    
}


int main() 

{
   
   char s1[1000],s2[1000],*p1=s1,*p2=s2;
   gets(s1);
   gets(s2);
   my_strcpy(p1,p2);
   printf("%s",s1); 
     
   return 0;
}

4,strcat

用来连接字符串

void strcat(char *p1,char *p2)
{
  int len;
  len=strlen(p1);
  p1=p1+len;
  for(;*p2!='';p1++,p2++)
  {
  *p1=*p2;
  }
  p1='';   
}

样例(存在部分是可以正确执行部分不能正确执行的问题)
#include
#include
void strcat(char *p1,char *p2)
{
  int len;
  len=strlen(p1);
  p1=p1+len;
  for(;*p2!='';p1++,p2++)
  {
  *p1=*p2;
  }
  p1='';   
}


int main() 

{
   
   char s1[1000],s2[1000],*p1=s1,*p2=s2;
   gets(s1);
   gets(s2);
   strcat(p1,p2);
   printf("%s",s1); 
     
   return 0;
}

正确实现


void my_strcpy(char *p, char *q)
{
    while (*p!='')
	    p++;
    
    while (*p++ = *q++);
}

样例
#include


void my_strcpy(char *p, char *q)
{
    while (*p!='')
	    p++;
    
    while (*p++ = *q++);
}

int main()
{
    char s1[100];
    char s2[100];
    gets(s1);
    gets(s2);
    my_strcpy(s1,s2);
    printf("%s",s1);

    return 0;
}

5,strchr C语言strchr函数

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

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

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

#include 
#define M 100
char *search(char *, char);
int main(void)
{ char str[M],ch,*p;
printf("请输入一个字符串:");
gets(str);
printf("请输入要查找的字符:");
ch=getchar();
p=search(str,ch);
puts(p);
return 0;
}
char *search(char *s, char c)
{   while(*s)//*s==''结束 
	{
	if(*s==c) return s;
	s++;
	}
	return NULL;
}

结果
请输入一个字符串:hello
请输入要查找的字符:l
llo

6,strstr

char *my_strstr(char *s1, char *s2)

功能:检索字串在字符串中首次出现的位置并返回

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

举例

#include 
#define M 100
 char * my_strstr(char *str1, char *str2)
{
    
    while (str1 != '')
    {
        char *p = str1;
        char *q = str2;
        char * res = NULL;
        if (*p == *q)
        {
            res = p;
            while (*p && *q && *p++ == *q++)
            {
                ;
            }
            if (*q == '')
                return res;
        }
        str1++;
    }
    return NULL;
}

int main(void)
{ char str[M],ch[M],*p;
printf("请输入一个字符串:");
gets(str);
printf("请输入要查找的字符串:");
gets(ch);
p= my_strstr(str,ch);
puts(p);
return 0;
}

结果
请输入一个字符串:hello world
请输入要查找的字符串:wo
world

7,strncmp

int strncmp(const char *str1, const char *str2, int n)

与strcmp相似,不过比较范围缩小到前n个字符

int my_strncmp(char s1[],char s2[],int n)
{
  int i;
  for(i=0;is2[i])
         return 1;
      if(s1[i] 

8,strncpy

char *strncpy(char *destinin, char *source, int maxlen)

与strcpy相似,不过比较范围缩小到前n个字符

void my_strcpy(char *p1,char *p2,int n)
{
  int i;
  for(i=0;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656080.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号