メインページ | アルファベット順一覧 | データ構造 | ファイル一覧 | データフィールド | グローバル | 関連ページ

string.c

説明を見る。
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         //if(b[i] == '\0' || a[i] == '\0'){
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         //if(0==(b[i] ^ a[i]){
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     //size_t i;
00102     size_t len = dkcstd_strlen(string1);
00103 
00104     return dkcstd_strncpy(&string1[len],string2,count);
00105 }
00106 
00107 
00108 
00109 //wchar_t
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     //size_t i;
00137     size_t len = dkcstd_wcslen(string1);
00138 
00139     return dkcstd_wcsncpy(&string1[len],string2,count);
00140     
00141 }
00142 

dkutil_cstdに対してSat Sep 10 09:19:18 2005に生成されました。  doxygen 1.4.4