最近与同学交流c语言库函数的实现,发现自己所学的不能灵活运用,于是乎我就开启猛火力模式,先自己来实现下常见的库函数。
strlen()函数说明
返回指定字符串长度,不包括结束字符'/0'
实现原型:
int mystrlen(const char *str)
{
int n;
while(*str++ != '\0')
n++;
return n;
}
// 以下函数为测试函数
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);