Go Down

Topic: Concatenar Strings (Read 2138 times) previous topic - next topic

avoletta

Olá Pessoal,

Como produzir o seguinte efeito:

char A[]="SA";
char B[]="PA";
char C[]="TO";

char x[]=A+B+C; e lógicamente = "SAPATO"  (???...)


Obrigado

KBK

#1
May 15, 2009, 05:51 am Last Edit: May 15, 2009, 06:03 am by KBK Reason: 1
Bom, vou te ajudar com uma função que faz exatamente isso.
Primeiramente, você precisar saber que o conteúdo da string A no seu exemploe é: 'S,A,\0'   com o \0 indicando o fim da string. Essa terceira posição, pode ser interpretada como 0 (falso) por qualquer lógica.
O procedimento, como você deve ter pensado, é ler posição por posição de cada string e escrever na string X.

Code: [Select]

void conca(char *psA,char *psB,char *psC,char *psX)
{
    while(*psA)            //Enquanto não encontrar \0
    {
           *psX=*psA;      // X recebe o valor de A, lembrando que os 2 começam da posição 0
           psA++;         //Avança uma posição        
           psX++;         //Avança uma posição
    }
    while(*psB)            //Enquanto não encontrar \0
    {
           *psX=*psB;      // X recebe o valor de B, lembrando que X não está na posição 0
           psB++;         //Avança uma posição        
           psX++;         //Avança uma posição
    }
    while(*psC)            //Enquanto não encontrar \0
    {
           *psX=*psC;      // X recebe o valor de C, lembrando que X não está na posição 0
           psC++;         //Avança uma posição        
           psX++;         //Avança uma posição
    }
}


então no seu programa você chama ela quando quiser:
conca(A,B,C,X);

Lembrando que você tem que definir X com tamanho maior que a soma das 3.

Caso queira fazer a mesma coisa com outras string, gravar J, K e L na Y, é só chamar a função com os argumentos certos.
conca(J,K,L,Y);


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy