📄 strutl.c
字号:
/*""FILE COMMENT""*************************************************************
* System Name : 偙偺僾儘僌儔儉偼嫵堢梡偱偡丅(揮梡晄壜)
* File Name : strutl.c
* Contents : 暥帤楍憖嶌
* Model : OAKS16-LCD Board懳墳
* CPU : M16C/60僔儕乕僘
* Compiler : M16C/60 NC30 COMPILER V.4.00 Release 2 - Entry
* OS : 巊梡偣偢
* Programer : 儖僱僒僗敿摫懱僩儗乕僯儞僌僙儞僞乕
* Note : OAKS16-M30620FCAFP(M16C/62僌儖乕僾,16MHz)懳墳
*******************************************************************************
* COPYRIGHT(C) 2003 RENESAS TECHNOLOGY CORPORATION丂AND
* RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED
*******************************************************************************
* History :
*""FILE COMMENT END""*********************************************************/
/*===== 僀儞僋儖乕僪僼傽僀儖 =====*/
#include "defs.h" /* 儐乕僓掕媊僼傽僀儖 */
#include "strutl.h" /* 暥帤楍憖嶌娭悢掕媊僼傽僀儖 */
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : int STRUTL__strlen(const char *p);
* 婡擻 : 暥帤偺挿偝傪媮傔傞
* 堷悢 : const char *p ; 暥帤楍
* 栠傝抣 : int ; 暥帤偺挿偝
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History : ---
*""FUNC COMMENT END""*********************************************************/
int STRUTL__strlen(const char *p)
{
int len=0; /* 暥帤楍偺挿偝 */
/* 暥帤楍偺廔抂(僰儖暥帤)傑偱張棟傪孞傝曉偡 */
for(; '\0' != *p; p++){
len++; /* 暥帤悢傪僇僂儞僩 */
}
return len; /* 暥帤悢傪曉偡 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : void STRUTL__strcpy(char *dest, const char *src)
* 婡擻 : 暥帤楍傪僐僺乕偡傞
* 堷悢 : char *dest ; 揮憲愭暥帤楍
* : const char *src ; 揮憲尦暥帤楍
* 栠傝抣 : 側偟
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History : ---
*""FUNC COMMENT END""*********************************************************/
void STRUTL__strcpy(char *dest, const char *src)
{
/* 暥帤楍偺廔抂(僰儖暥帤)傑偱張棟傪孞傝曉偡 */
for(; '\0' != *src; src++){
*dest++ = *src; /* 暥帤傪僐僺乕 */
}
*dest = '\0'; /* 暥帤楍偲偡傞(廔抂偵僰儖暥帤傪晅壛) */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : STRUTL__x2s(int hex, char *s, int len)
* 婡擻 : 16恑悢傪巜掕偝傟偨暥帤挿偺暥帤楍偵曄姺
* 堷悢 : int hex; 0x0000乣0x7fff偺抣
* : char *s; 曄姺偟偨暥帤楍
* : int len; 巜掕偝傟偨暥帤挿
* 栠傝抣 : 側偟
* 巊梡娭悢 : STRUTL__x2a() ; 16恑偺抣傪1暥帤僨乕僞偵曄姺偡傞
* 拲堄帠崁 : s偼len暥帤挿+'\0'傪奿擺偱偒傞僶僢僼傽傊偺億僀儞僞傪搉偡偙偲
* : 僶僢僼傽偺愭摢偑忋埵寘丄廔抂偑壓埵寘偲側傞丅
* : 嵍0媗偺暥帤傪惗惉偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
void STRUTL__x2s(int hex, char *s, int len)
{
int i;
/* 僶僢僼傽(s)廔抂偵僰儖暥帤傪晅壛偡傞 */
s[len] = '\0';
/* 僶僢僼傽(s)偺廔抂偐傜愭摢傑偱張棟傪孞傝曉偡 */
for(i = len-1; 0 <= i; i--){
/*16恑偺抣傪1暥帤僨乕僞偵曄姺偡傞 */
STRUTL__x2a(hex % 0x10, &s[i]); /* 壓埵寘偐傜暥帤壔 */
hex /= 0x10; /* 1/16偡傞 */
}
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : BOOL STRUTL__x2a(int hex, char *c);
* 婡擻 : 16恑偺抣傪1暥帤偵曄姺
* 堷悢 : int hex; 曄姺偡傞抣(0x0乣0xf傑偱偺抣)
* : char *c; 曄姺偟偨16恑暥帤傪廂傔傞億僀儞僞
* 栠傝抣 : BOOL(int) TRUE ; 惓忢廔椆
* : FALSE ; 堎忢廔椆
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 0x0乣0xf埲奜偺抣偑搉偝傟偨応崌丄曄姺偣偢偵FALSE傪曉偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__x2a(int hex, char *c)
{
/* 16恑悢暥帤僥乕僽儖 */
static const char HexCharacterTable[]={
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', ':', 'B',
'C', 'D', 'E', 'F'
};
/* 0x0乣0xf偺抣偑搉偝傟偨応崌 */
if( (0 <= hex) && (hex <= 0xf) ){
/* 16恑悢傪16恑暥帤偵曄姺偡傞 */
*c = HexCharacterTable[hex];
return TRUE;
}
/* 偦傟埲奜 */
return FALSE; /* 僄儔乕抣傪曉偡 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : BOOL STRUTL__s2x(const char *s, int *hex, int len)
* 婡擻 : 巜掕偟偨暥帤挿傪16恑偺抣偵曄姺
* 堷悢 : const char *src ; 0000乣7FFF偺暥帤楍
* : int *hex ; 曄姺偟偨抣
* : int len ; 曄姺偺懳徾偺暥帤悢
* 栠傝抣 : BOOL(int) TRUE ; 惓忢廔椆
* : FALSE ; 堎忢廔椆
* 巊梡娭悢 : STRUTL__a2x() ; 1暥帤暘傪16恑偺抣偵曄姺偡傞
* 拲堄帠崁 : s偐傜巜掕偝傟偨暥帤悢暘16恑偺抣偵曄姺偟傑偡丅
* : 嵍' '(SPACE)媗偼懳墳偟偰傑偣傫(嵍0媗偼栤戣柍偟)
* : 16恑埲奜偺暥帤傪尒偮偗偨帪曄姺傪搑拞偱廔椆偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__s2x(const char *s, int *hex, int len)
{
int i;
int x; /* 暥帤傪16恑偺抣偵曄姺偟偨帪偺堦帪揑側曄悢 */
int ans = 0; /* 嵟廔揑側寁嶼寢壥傪擖傟偰偄傞曄悢*hex偺戙傢傝 */
/* 曄姺懳徾偺暥帤悢暘張棟傪孞傝曉偡 */
for(i = 0; i < len; i++){
if('\0' == *s){
return FALSE; /* 巜掕暥帤悢偺搑拞偱僰儖暥帤敪尒 */
}
/* 1暥帤暘傪16恑偺抣偵曄姺偡傞 */
if( ! STRUTL__a2x(*s++, &x) ){
/* 曄姺偵幐攕偟偨 */
return FALSE; /* 16恑暥帤埲奜傪敪尒 */
}
/* 嵟廔揑側寁嶼寢壥傪媮傔傞 */
ans = ans * 0x10 + x;
}
/* 嵟廔揑側寁嶼寢壥傪曉偡 */
*hex = ans;
/* 惓忢偵曄姺偱偒偨 */
return TRUE;
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : BOOL STRUTL__a2x(char c, int *hex);
* 婡擻 : 1暥帤傪16恑偺抣偵曄姺
* 堷悢 : char c; 曄姺偡傞暥帤
* : int *hex; 曄姺偟偨16恑偺抣傪廂傔傞億僀儞僞
* 栠傝抣 : BOOL(int) TRUE ; 惓忢廔椆
* : FALSE ; 堎忢廔椆
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 16恑暥帤埲奜偺偲偒偼曄姺偣偢偵FALSE傪曉偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__a2x(char c, int *hex)
{
/* 曄姺懳徾偺暥帤偑'0'偐傜'9'偺偲偒 */
if(('0' <= c) && (c <= '9')){
*hex = c - '0'; /* 16恑悢抣偵曄姺 */
return TRUE;
}
/* 曄姺懳徾偺暥帤偑'a'偐傜'f'偺偲偒 */
else if(('a' <= c) && (c <= 'f')){
*hex = c - 'a' + 0xa; /* 16恑悢抣偵曄姺 */
return TRUE;
}
/* 曄姺懳徠偺暥帤偑'A'偐傜'F'偺偲偒 */
else if(('A' <= c) && (c <= 'F')){
*hex = c - 'A' + 0xa; /* 16恑悢抣偵曄姺 */
return TRUE;
}
/* 偦傟埲奜 */
return FALSE;
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : void STRUTL__d2s(int dec, char *s, int len)
* 婡擻 : 10恑悢傪巜掕偝傟偨暥帤挿偺暥帤楍偵曄姺
* 堷悢 : int dec; 0偐傜32767傑偱偺抣
* : char *s; 曄姺偟偨暥帤楍
* : int len; 巜掕偝傟偨暥帤挿
* 栠傝抣 : 側偟
* 巊梡娭悢 : STRUTL__d2a() ; 10恑偺抣傪1暥帤偵曄姺
* 拲堄帠崁 : s偼len暥帤挿+'\0'傪奿擺偱偒傞僶僢僼傽傊偺億僀儞僞傪搉偡偙偲丅
* : 僶僢僼傽偺愭摢偑忋埵寘丄廔抂偑壓埵寘偲側傞丅
* : 嵍0媗偺暥帤傪惗惉偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
void STRUTL__d2s(int dec, char *s, int len)
{
int i;
/* 僶僢僼傽(s)廔抂偵僰儖暥帤傪晅壛偡傞 */
s[len] = '\0';
/* 僶僢僼傽(s)偺廔抂偐傜愭摢傑偱張棟傪孞傝曉偡 */
for(i = len-1; 0 <= i; i--){
/*10恑偺抣傪1暥帤僨乕僞偵曄姺偡傞 */
STRUTL__d2a(dec % 10, &s[i]); /* 悢抣偺壓埵寘偐傜暥帤壔 */
dec /= 10; /* 1/10偡傞 */
}
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : BOOL STRUTL__d2a(int dec, char *c)
* 婡擻 : 10恑偺抣傪1暥帤偵曄姺
* 堷悢 : int dec; 曄姺偡傞抣
* : char *c; 曄姺偟偨10恑暥帤傪廂傔傞億僀儞僞
* 栠傝抣 : BOOL(int) TRUE ; 惓忢廔椆
* : FALSE ; 堎忢廔椆
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 10恑暥帤埲奜偺偲偒偼曄姺偣偢偵FALSE傪曉偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__d2a(int dec, char *c)
{
/* 10恑悢暥帤僥乕僽儖 */
static const char DecCharacterTable[]={
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9'
};
/* 0乣9偺抣偑搉偝傟偨応崌*/
if( (0 <= dec) && (dec <= 9) ){
*c = DecCharacterTable[dec]; /* 10恑悢傪10恑暥帤偵曄姺 */
return TRUE;
}
/* 偦傟埲奜 */
return FALSE; /* 僄儔乕抣傪曉偡 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : BOOL STRUTL__s2d(const char *s, int *dec, int len)
* 婡擻 : 巜掕偝傟偨暥帤挿傪10恑偺抣偵曄姺
* 堷悢 : const char *s; 0000乣7FFF偺暥帤楍
* : int *dec; 曄姺偟偨抣
* : int len; 曄姺偺懳徾偺暥帤悢
* 栠傝抣 : BOOL(int) TRUE ; 惓忢廔椆
* : FALSE ; 堎忢廔椆
* 巊梡娭悢 : STRULT__a2d(); 1暥帤暘傪10恑悢偵曄姺偡傞
* 拲堄帠崁 : s偐傜巜掕偝傟偨暥帤悢暘10恑偺抣偵曄姺偟傑偡丅
* : 嵍` '(SPACE)媗偼懳墳偟偰偄傑偣傫(嵍0媗偼栤戣柍偟)
* : 10恑埲奜偺暥帤傪尒偮偗偨帪曄姺傪搑拞偱廔椆偟傑偡丅
* History :
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__s2d(const char *s, int *dec, int len)
{
int i;
int d; /* 暥帤傪10恑偺抣偵曄姺偟偨帪偺堦帪揑側曄悢 */
int ans = 0; /* 嵟廔揑側寁嶼寢壥傪擖傟偰偄傞曄悢*dec偺戙傢傝 */
/* 曄姺懳徾偺暥帤悢暘張棟傪孞傝曉偡 */
for(i = 0; i < len; i++){
if('\0' == *s){
return FALSE; /* 巜掕暥帤悢偺搑拞偱僰儖暥帤敪尒 */
}
/* 1暥帤暘傪10恑偺抣偵曄姺偡傞 */
if( ! STRUTL__a2d(*s++, &d) ){
/* 曄姺偵幐攕偟偨 */
return FALSE; /* 16恑暥帤埲奜傪敪尒 */
}
/* 嵟廔揑側寁嶼寢壥傪媮傔傞 */
ans = ans * 10 + d;
}
/* 嵟廔揑側寁嶼寢壥傪曉偡 */
*dec = ans;
/* 惓忢偵曄姺偱偒偨 */
return TRUE;
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : BOOL STRUTL__a2d(char c, int *dec);
* 婡擻 : 1暥帤傪10恑偺抣偵曄姺
* 堷悢 : char c; 曄姺偡傞暥帤
* : int *dec; 曄姺偟偨10恑悢偺抣傪廂傔傞億僀儞僞
* 栠傝抣 : BOOL(int) TRUE ; 惓忢廔椆
* : FALSE ; 堎忢廔椆
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 10恑暥帤埲奜偺偲偒偼曄姺偣偢偵FALSE傪曉偟傑偡丅
* History : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__a2d(char c, int *dec)
{
/* 曄姺懳徾偺暥帤偑'0'偐傜'9'偺偲偒 */
if( ('0' <= c) && (c <= '9') ){
*dec = c - '0'; /* 10恑悢抣偵曄姺 */
return TRUE;
}
/* 偦傟埲奜 */
return FALSE;
}
/******************************************************************************
end of file
******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -