Olá Pessoal…
Hoje irei mostrar 3 funções (substr, itoa e trim) que ajudam muito os programadores em Linguagem C. Essas funções não são nativas, então elas foram criadas para estudo / uso.
Pessoal, no tempo que eu estudava linguagem C, várias funções nativas em outras linguagens (como C++ e Java), não tinham em C, por isso fui procurando na internet, mas em poucos lugares obtive clareza. Então, acabei criando e modificando algumas funções, para uso na Linguagem C (usei o compilador GCC). Abaixo 3 funções que ajudam e muito na vida de um programador:
$> iToA:
A função iToA, era nativa do Borland C/C++, porém em bibliotecas na linguagem C pura, não há referências claras para essa função. Essa rotina basicamente, conver um número em String, com um fator de conversão (uma base). Abaixo o código fonte:
//função que converte número para String char *xItoa(int nNum, char* cDest, int nRad) { static char dig[] = "0123456789" "abcdefghijklmnopqrstuvwxyz"; int n = 0, neg = 0; unsigned int v; char* p, *q; char c; //se o número estiver negativo, altera a chave if (nRad == 10 && nNum < 0) { nNum = -nNum; neg = 1; } v = nNum; //adicionando os números na string do { cDest[n++] = dig[v%nRad]; v /= nRad; } while (v); if (neg) cDest[n++] = '-'; //encerrando a string cDest[n] = ''; for (p = cDest, q = p + (n-1); p < q; ++p, --q) c = *p, *p = *q, *q = c; return cDest; }
$> SubStr:
A Função SubStr, basicamente copia apenas uma parte de uma String, sendo assim, eu passo o parâmetro inicial e a quantidade de caracteres que pretendo copiar. Abaixo segue o código fonte da função:
//função que pega uma substring pegando a posição Inicial e a Quantidade char *xSubstr(char *cTxt, int nIni, int nQuant) { char *retorno = strdup(cTxt); int aux=0; int tam=strlen(cTxt); //se a posição Inicial for maior que a string //em si, o nIni será 0 if(nIni < 0 || nIni > tam ) nIni = 0; //se a Quantidade for maior que o Ini + string, //a Quantidade vai ser a diferença do tamanho //da string e do nIni if(nQuant > (tam-nIni)) nQuant = tam-nIni; //percorre a string guardando os caracteres desejados for (aux=nIni;aux<nQuant+nIni;aux++) retorno[aux-nIni] = cTxt[aux]; retorno[aux-nIni] = ''; return retorno; }
$> Trim:
A função Trim retira os espaços em branco nos dois extremos da String. Abaixo o código fonte:
//função que retira os espaços em branco das laterais char *xTrim(char *cStr){ char *nova; int i=0, nIni, nQuant; //teste - enquanto vai achando espaço em branco para pegar a posição Inicial while(i<=strlen(cStr)){ if (cStr[i]!=' '){ nIni=i; i=strlen(cStr); } i++; } //retirando os caracteres finais i-=2; while(i>0){ //Se for espaço em branco, diminui o valor if (cStr[i]==' '){ i--; } else break; } //Pegando a quantidade final nQuant=i-nIni+1; //pegando a string sem os espaços em branco nova=xSubstr(cStr,nIni,nQuant); return nova; }
Agora basta estudar os códigos e aproveitá-los em seus programas. Abaixo um exemplo de programa que utiliza tais funções:
$> Programa:
#include <stdio.h> #include <string.h> char *xTrim(char *cStr); char *xItoa(int nNum, char* cDest, int nRad); char *xSubstr(char* cTxt, int nIni, int nQuant); void main(){ char *teste="Terminal de Informação"; char *resp; xItoa(57, resp, 10); printf("\nFunções Complementares:"); printf("\n> SubStr: ..%s..",xSubstr(teste, 0, 8)); printf("\n> iToA: ..%s..",resp); printf("\n> Trim: ..%s..\n\n",xTrim(" Teste Trim ")); } //...Colocar as funções abaixo desse código
E aqui uma imagem de execução do programa:
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Mais Uma Vez, Parabéns pelo site. Esta 10!!!
Muito Obrigado Vaine.
Abraços.
Parabéns !! Material Muito bom!!!
Obrigado Kelton.
Abraços.