00001
00007 #include "string.h"
00008
00009
00010 #if 1== DKUTIL_CSTD_MSVC_IASM
00011
00012
00013 #else
00014
00015
00016
00017 #endif
00018
00019
00020
00021 DKC_INLINE char *dkcstd_strcpy( char *string1, const char *string2 ){
00022
00023 size_t i;
00024 for(i=0;string2[i] != '\0';i++){
00025 string1[i] = string2[i];
00026 }
00027 return string1;
00028
00029 }
00030
00031
00032 DKC_INLINE char *dkcstd_strncpy( char *string1, const char *string2, size_t count )
00033 {
00034 size_t i;
00035 for(i=0;i < count || string2[i] != '\0';i++)
00036 {
00037 string1[i] = string2[i];
00038 }
00039
00040 return string1;
00041 }
00042
00043 DKC_INLINE size_t dkcstd_strlen(const char *s){
00044 size_t i=0;
00045 while(s[i] != '\0'){
00046 i++;
00047 }
00048 return i;
00049 }
00050
00052 DKC_INLINE int dkcstd_strcmp(const char *a,const char *b){
00053 size_t i;
00054 for(i = 0;; i++)
00055 {
00056
00057 if(0==(b[i] & a[i])){
00058 break;
00059 }
00060 if(b[i] != a[i]){
00061 return ((int)*a - (int)*b);
00062 }
00063 }
00064 return 0;
00065
00066 }
00067
00068 DKC_INLINE int dkcstd_strncmp(const char* a, const char* b, size_t size)
00069 {
00070 size_t i;
00071 for(i = 0; i < size; i++)
00072 {
00073 if(b[i] == '\0' && a[i] == '\0'){
00074
00075 break;
00076 }
00077 if(b[i] != a[i]){
00078 return ((int)*a - (int)*b);
00079 }
00080 }
00081 return 0;
00082 }
00083
00084 DKC_INLINE char *dkcstd_strstr(const char *string1, const char *string2)
00085 {
00086 const char *p = string1;
00087 size_t len = dkcstd_strlen(string2);
00088 while(*p)
00089 {
00090 if(dkcstd_strncmp(p, string2,len ) == 0)
00091 {
00092 return (char*)p;
00093 }
00094 p++;
00095 }
00096 return NULL;
00097 }
00098
00099 DKC_INLINE char *dkcstd_strncat(char *string1, const char *string2, size_t count )
00100 {
00101
00102 size_t len = dkcstd_strlen(string1);
00103
00104 return dkcstd_strncpy(&string1[len],string2,count);
00105 }
00106
00107
00108
00109
00110
00111
00112 DKC_INLINE size_t dkcstd_wcslen( const wchar_t *string )
00113 {
00114 size_t i=0;
00115 while(string[i] != L'\0'){
00116 i++;
00117 }
00118 return i;
00119 }
00120
00121
00122 DKC_INLINE wchar_t *dkcstd_wcsncpy( wchar_t *string1, const wchar_t *string2, size_t count )
00123 {
00124 size_t i;
00125 for(i=0;i < count || string2[i] != L'\0';i++)
00126 {
00127 string1[i] = string2[i];
00128 }
00129
00130 return string1;
00131
00132 }
00133
00134 DKC_INLINE wchar_t *dkcstd_wcsncat( wchar_t *string1, const wchar_t *string2 ,size_t count )
00135 {
00136
00137 size_t len = dkcstd_wcslen(string1);
00138
00139 return dkcstd_wcsncpy(&string1[len],string2,count);
00140
00141 }
00142