⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string.c

📁 启动代码
💻 C
字号:
/**
 * @file string.c
 * @brief string operation function
 * Copyright (C) 2006 Anyka (GuangZhou) Software Technology Co., Ltd.
 * @author Junhua Zhao
 * @date 2006-01-05
 * @version 1.0
 * @ref AK3221 technical spec.
 */

#include "string.h"

int  strlen(const char * s)
{
	int ret;

	for(ret = 0 ; s[ret] != '\0'; ret++)
		;

	return ret;
}

void *memset(void *s, char c, unsigned int n)
{
	unsigned int i;
	char *p;

	p = (char *)s;
	
	for( i = 0 ; i < n ; i ++)
	{
		p[i] = (char)c;
	}
	return s;
}

void *memcpy(void *dest, const void *sour, unsigned int n)
{
	unsigned int i;
	char *pd,*ps;
	
	pd = (char *)dest;
	ps = (char *)sour;
	for( i = 0 ; i < n ; i ++)
	{
		pd[i] = ps[i];
	}

	return dest;
}

char *strcpy(char *dest, const char *sour)
{
	int i;
	for(i=0;;i++)
	{
		*(dest+i) = *(sour+i);
		if (*(sour+i)=='\0')
			break;
	}
	return dest;
}

int strcmp(const char *s1, const char *s2)
{
	int i;
	int len = strlen (s1);
	
	if ( len != strlen(s2) )
	{
		return -1;
	}
	for(i =0 ; i<len; i ++)
	{
		if (s1[i] != s2[i])
		{
			return -1;
		}
	}
	
	return 0;
}

short ctos(char ch,char flag)
{
	if (ch>='0' && ch<='9'){
		if ((ch-'0')>=flag)
			return -1;
		else return ch-'0';
	}
	if (flag==16){
		if (ch>='a' && ch<='f')
			return ch-'a'+10;
		else if (ch>='A' && ch<='F')
			return ch-'A'+10;
		else return -1;
	}
	else return -1;
}

int atoi(const char *str,char flag)
{
	int i,r=0;
	short k;

	for(i=0;i<strlen(str);i++){
		k = ctos(*(str+i),flag);
		if (k<0)
			return 0;
		r = r*flag+k;
	}
	return r;
}

char *itoa(int num,char *dest,char flag,short len)
{
	short j; 
	int k;
	unsigned int number;
	char i,shortflag;

	number = (unsigned int)num;
	shortflag = 0;	
	if (!len){
		switch(flag){
		case 2:
			len = 32;
			break;
		case 8:
			len = 11;
			break;
		case 10:
			len = 10;
			if(num<0)
				number = -num;
			break;
		case 16:
			len = 8;
			break;
		default:
			len = 8;
		}
		shortflag = 1;
	}
	memset(dest,'0',len);
	*(dest+len) = '\0';
	if (flag>16)
		return dest;

	j = len-1;
	while(j>=0){
		k = (short)flag;
		i = (char)(number % flag);

		if (i<10)
			dest[j] = i+'0';
		else dest[j] = i-10+'A';
		j--;
		if (number<flag)
			break;
		number = number / flag;
	}

	if (flag==10 && num<0)
	{
		dest[j] = '-';
		j--;
	}

	if (shortflag){
		shortflag = j+1;
		for(j = shortflag;j<len+1;j++)
			dest[j-shortflag] = dest[j];
	}

	return dest;
}

/* end of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -