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.