Concatenar duas strings
Exercício de lógica de programação para concatenar duas strings.
Exercício de lógica de programação
Faça um programa para concatenar duas strings.
Linguagem C
Para facilitar a escrita dos testes vamos incluir a biblioteca string.h
.
#include<stdio.h>
#include<string.h>
#include<assert.h>
int concatenar(char s1[], char s2[]) {
// Aqui entra a lógica do programa.
}
//
// Testes
//
int main() {
char str1[] = "abc";
char str2[] = "defg";
concatenar(str1, str2);
assert(strcmp("abcdefg", str1) == 0);
return (0);
}
Primeira solução
//
// Primeira solução
//
void concatenar(char s1[], char s2[]) {
int i, j;
// Olha que laço for maroto!!!
// Com ele eu vou pegar o tamanho da primeira string...
// descomente o `printf` para ver o tamnho da primeira string.
for (i = 0; s1[i] != '\0'; ++i);
// printf("%d \n", i);
for (j = 0; s2[j] != '\0'; ++j, ++i) {
s1[i] = s2[j];
}
s1[i] = '\0';
}
Segunda solução
//
// Segunda solução (versão ponteiros)
//
char* concatenar(char *s1, char *s2) {
int i, j;
for (i = 0; s1[i] != '\0'; ++i);
for (j = 0; s2[j] != '\0'; ++j, ++i) {
s1[i] = s2[j];
}
s1[i] = '\0';
return s1;
}
Terceira solução
//
// Terceira solução
//
void concatenar(char s[], char t[]) {
int i = 0, j = 0;
while (s[i] != '\0') {
i++;
}
while ((s[i++] = t[j++]) != '\0');
}
Quarta solução
//
// Quarta solução
//
void concatenar(char s1[], char s2[]) {
int i, j;
i = strlen(s1);
for (j = 0; s2[j] != 0; i++, j++) {
s1[i] = s2[j];
}
s1[i] = 0;
}
Quinta solução
Esta solução utiliza-se de ponteiros.
//
// Quinta solução
//
void concatenar(char *original, char *add) {
while (*original)
original++;
while (*add) {
*original = *add;
add++;
original++;
}
*original = '\0';
}
Sexta solução
Esta solução é ótima pois, ela aproveita que incluímos a biblioteca string.h
e utiliza uma função pronta para resolver
este problema.
//
// Sexta solução
//
void concatenar(char str1[], char str2[]) {
strcat(str1, str2);
}
Linguagem Python
Como já era de se esperar, em toda linguagem de alto nível, será extremamente simples concatenar duas strings.
Executando Python no terminal…
>>> "abc" + "defg"
'abcdefg'
Linguagem JavaScript
Idem…
> "abc" + "defg"
'abcdefg'