00001
00002
00003
00004
00005
00006 #include "strutil.h"
00007 #include <cstring>
00008 #include <cctype>
00009
00010 void strtoupper(char cadena[])
00011 {
00012 if ( cadena != NULL ) {
00013 char * ptr = cadena;
00014
00015 for(; *ptr != 0; ++ptr) {
00016 *ptr = toupper( *ptr );
00017 }
00018 }
00019 }
00020
00021 void strtolower(char cadena[])
00022 {
00023 if ( cadena != NULL ) {
00024 char * ptr = cadena;
00025
00026 for(; *ptr != 0; ++ptr) {
00027 *ptr = tolower( *ptr );
00028 }
00029 }
00030 }
00031
00032 void strtrim(char cadena[])
00033 {
00034 if ( cadena != NULL ) {
00035 static const char * Espacios = " \t\n\r";
00036 char * fin = cadena + strlen( cadena );
00037 char * inicioReal;
00038 char * finReal;
00039
00040
00041 for(inicioReal = cadena; strchr( Espacios, *inicioReal ) != NULL; ++inicioReal);
00042
00043
00044 for(finReal = fin - 1; strchr( Espacios, *finReal ) != NULL; --finReal);
00045
00046
00047 *( finReal + 1 ) = 0;
00048 strcpy( cadena, inicioReal );
00049 }
00050 }
00051
00052 void strsubstring(const char cadena[], char cadena2[], unsigned int pos, unsigned int num)
00053 {
00054 if ( cadena != cadena2
00055 && cadena != NULL
00056 && cadena2 != NULL )
00057 {
00058 const char * ptr = cadena;
00059 unsigned int len = strlen( cadena );
00060 *cadena2 = 0;
00061 char * ptrDest = cadena2;
00062
00063 if ( pos < len ) {
00064
00065 if ( num > ( len - pos ) ) {
00066 num = len - pos;
00067 }
00068
00069 ptr += pos;
00070 for(; ptr != 0 && num > 0; ++ptrDest, ++ptr, --num) {
00071 *ptrDest = *ptr;
00072 }
00073
00074 *ptrDest = 0;
00075 }
00076 }
00077 }
00078
00079 int strpos(const char cadena1[], const char cadena2[])
00080 {
00081 int toret = -1;
00082
00083 if ( cadena1 != NULL
00084 && cadena2 != NULL )
00085 {
00086 char * pos = strstr( cadena1, cadena2 );
00087
00088 if ( pos != NULL ) {
00089 toret = pos - cadena1;
00090 }
00091 }
00092
00093 return toret;
00094 }
00095
00096 void strinsert(const char cadena1[], char cadena2[], unsigned int pos)
00097 {
00098 if ( cadena1 != NULL
00099 && cadena2 != NULL )
00100 {
00101 unsigned int tamHueco = strlen( cadena1 );
00102 int i = strlen( cadena2 );
00103
00104 if ( pos < (unsigned int) i ) {
00105
00106 *( cadena2 + i + tamHueco ) = 0;
00107
00108
00109 for(--i; (unsigned int) i >= pos; --i) {
00110 cadena2[ i + tamHueco ] = cadena2[ i ];
00111 }
00112
00113
00114 for(unsigned int i = 0; i < tamHueco; ++i) {
00115 cadena2[ pos + i ] = cadena1[ i ];
00116 }
00117 }
00118 }
00119 }
00120
00121 void strdel(char cadena[], unsigned int pos, unsigned int numCars)
00122 {
00123 if ( cadena != NULL ) {
00124 unsigned int tam = strlen( cadena );
00125
00126 if ( pos < tam ) {
00127
00128 if ( numCars >= ( tam - pos ) ) {
00129 *( cadena + pos ) = 0;
00130 } else {
00131
00132 int i = pos + numCars;
00133
00134 for(; (unsigned int) i <= tam; ++i) {
00135 cadena[ i - numCars ] = cadena[ i ];
00136 }
00137 }
00138 }
00139 }
00140 }
00141
00142 void strreplace(char cadena1[], const char cadena2[], const char cadena3[])
00143 {
00144 if ( cadena1 != NULL
00145 && cadena2 != NULL
00146 && cadena3 != NULL )
00147 {
00148 unsigned int tamCad2 = strlen( cadena2 );
00149 int pos = strpos( cadena1, cadena2 );
00150
00151 while( pos >= 0 ) {
00152 strdel( cadena1, pos, tamCad2 );
00153 strinsert( cadena3, cadena1, pos );
00154
00155 pos = strpos( cadena1, cadena2 );
00156 }
00157 }
00158 }
00159
00160 void strconcatchar(char cadena[], int ch)
00161 {
00162 if ( cadena != NULL ) {
00163 int tam = strlen( cadena );
00164 *( cadena + tam ) = ch;
00165 *( cadena + tam + 1 ) = 0;
00166 }
00167 }
00168
00169 void strclear(char cadena[])
00170 {
00171 if ( cadena != NULL ) {
00172 *cadena = 0;
00173 }
00174 }