恶补c语言之strlen的实现

2021年09月15日 阅读数:1
这篇文章主要向大家介绍恶补c语言之strlen的实现,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

     最近与同窗交流c语言库函数的实现,发现本身所学的不能灵活运用,因而乎我就开启猛火力模式,先本身来实现下常见的库函数。ide

     

strlen()函数说明函数

        返回指定字符串长度,不包括结束字符'/0' 测试


实现原型:spa

      

 int MyStrlen(const char *str)orm

{字符串

          int n;get

          while(*str++ != '\0')input

              n++;原型

          return n;string

 }

 // 如下函数为测试函数

void main()      

{

     int m;

     char a[100];

     printf("please input a string!\n");

    

     gets(a);

     m=MyStrlen(a);

     printf("%d",m);

}

#include <stdio.h>   

#include <string.h>    

#include <stdarg.h>  



//////////////////////////////////////////////////////////////////////////

static char a[10] = {'0','x','0','0','0','0','0','0','0','0'}; 


char* Int2Hex_Inchar(int num) 

int i=9; 

int yushu; 


while(num>0) 

yushu=num%16; 

if(yushu < 10)

a[i--]=yushu + 48;

else

a[i--]=yushu + 55; 

num=num/16; 


return a;

}


int my_print(char *strin, char *strout,... )    

if(strin == NULL)

   return -1;

    va_list arg_ptr;                   /* 定义保存函数参数的结构 */        

    int para;                     /* 存放取出的字符串参数 */    

    int i;   

char *temp;

                                        

    va_start( arg_ptr, strout );    /* argp指向传入的第一个可选参数,    msg是最后一个肯定的参数 */

      

    while(*strin)

{

if(*strin!= '%')  

       {  

         putchar(*strin);

*strout = *strin;

         strin++;  

strout++;

       }  

  else

  {

para = va_arg( arg_ptr, int);

temp = Int2Hex_Inchar(para);

for(i=0;i<10;i++)

{

putchar(*temp);

*strout++ = *temp++ ;

}

//printf("%s ",Int2Hex_Inchar(para));

strin=strin+2;

  }

}

*strout = '\0';

      

    va_end( arg_ptr );                                   /* 将arg_ptr置为NULL */    

    return 0;    

}  

  

  

void main( void )    

{

char strout[1024]; 

my_print("ni hao %z ni hao %z %z %z ",strout,50,40,70,80,90);

printf("\n In main the strout is : %s\n",strout);       

}