简单的实现c函数的源代码


 C语言库函数名:

 atoi

  功 能: 把字符串转换成整型数.

  名字来源:array to integer 的缩写.

  函数说明: atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。

  原型: int atoi(const char *nptr);

  需要用到的头文件: #include <stdlib.h>
简单的实现atoi函数的源代码:

int my_atoi(const char *str){
  int result;
  int signal = 1; /* 默认为正数 */
  if((*str>='0'&&*str<='9')||*str=='-'||*str=='+'){
  	if(*str=='-'||*str=='+'){
  		if(*str=='-')
  			signal = -1; /* 输入负数 */
  		str++;
  	} 
  }
  else return 0;
  /* 开始转换 */
  while(*str>='0'&&*str<='9')
 	 result = result*10+(*str++ -'0');
  return signal*result;
}

 

strcpy

  原型:extern char *strcpy(char *dest,char *src);
  用法:#include <string.h>
  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
  返回指向dest的指针。
  给一个很经典版本的strcpy函数源码:
char *strcpy(char *strDest, const char *strSrc){
  assert((strDest!=NULL) && (strSrc !=NULL)); 
  char *address = strDest; 
  while( (*strDest++ = * strSrc++) != ‘\0’ ) 
     ; 
  return address ; 
}
 

itoa

  功 能: 把一整数转换为字符串
  用 法: char *itoa(int value, char *string, int radix);
  头文件: <stdlib.h>
#include <stdlib.h>
  #include <stdio.h>
  int main()
  {
  	int number = 123456;
  	char string[25];
  	itoa(number, string, 10);
 	printf("integer = %d string = %s\n", number, string);
 	return 0; 
  }
  /* 实现itoa函数的源代码 */
  char *myitoa(int num,char *str,int radix)
  {
  	/* 索引表 */
  	char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  	unsigned unum; /* 中间变量 */
  	int i=0,j,k;

  	/* 确定unum的值 */
 	 if(radix==10&&num<0) /* 十进制负数 */
  	{
  		unum=(unsigned)-num;
  		str[i++]='-';
  	}



  	else unum=(unsigned)num; /* 其他情况 */
  	/* 逆序 */
  	do
  	{
  		str[i++]=index[unum%(unsigned)radix];
  		unum/=radix;
  	}while(unum);
 	 str[i]='\0';

 	 /* 转换 */
  	if(str[0]=='-') k=1; /* 十进制负数 */
  	else k=0;
 	 for(j=k;j<(i-1)/2+k;j++)
 	 {
 		 num=str[j];
 		 str[j]=str[i-j-1+k];
 		 str[i-j-1+k]=num;
 	 }
 	 return str;
  }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值