Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xakire

Concatenação de strings

Recommended Posts

Desenvolver um programa que leia 3 strings com 50 posições e desenvolver os seguintes

itens: ler as 3 strings; vericar queal é a maior string e apresentar; agrupar as 3

strings em um única string (não utilizar a função strcat).

 

Parte do código tah pronto, mas como faço para concatenar as strings sem utilizar strcat.. http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

 

 

 

#include "stdafx.h"
#include "stdio.h"
#include "string.h"


int main(int argc, char* argv[])
{
	char ch1[50],ch2[50],ch3[50];

	int tam1,tam2,tam3;
	
	
	gets(ch1);
	
	gets(ch2);
	
	gets(ch3);
	
	tam1=strlen(ch1);
	
	tam2=strlen(ch2);
	
	tam3=strlen(ch3);

	if(tam1> tam2 && tam1 > tam3)
	{
	
		printf("A maior string digitada e %s:\n",ch1);
	}
	else if(tam2 > tam1 && tam2> tam3)
	{
	
		printf("A maior string digitada e %s:\n",ch2);;
	}
	else
	{
		
		printf("A maior string digitada e %s:\n",ch3);
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que então isso vai concatenar as strings!

 

#include <iostream>

using namespace std;

string maiorString(string str1, string str2, string str3){
    string retorno;
    if ((str1.length()>str2.length()) && (str1.length()>str3.length())) retorno.append(str1);
    else if (str2.length()>str3.length()) retorno.append(str2);
    else retorno.append(str3);
    return retorno;
}

int main(){
    string str1, str2, str3, strmaior, strfinal;
    cout << "Primeira string: ";
    getline(cin, str1);
    cout << "Segunda string: ";
    getline(cin, str2);
    cout << "Terceira string: ";
    getline(cin, str3);
    cout << "Maior string: " << maiorString(str1, str2, str3) << endl;
    strfinal.append(str1);
    strfinal.append(str2);
    strfinal.append(str3);
    cout << "Tudo numa string so: " << strfinal << endl;
    return 0;
}

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caríssimo,

 

Acho que você quer algo assim:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * concat_3strings(char *str1, char *str2, char *str3);

int main(int argc, char *argv[])
{
    char str1[]="Linux";
    char str2[]="the";
    char str3[]="best...";
    
    printf("%s\n",concat_3strings(str1,str2,str3));
    
    return 0;
}

char * concat_3strings(char *str1, char *str2, char *str3)
{
     /* Inicia com 0 as variaveis que vão conter o tamanho das strings */
     int len_strg1=0;
     int len_strg2=0;
     int len_strg3=0;
     
     int tam_total=0; //Inicia a variavel que vai conter o tamanho total com 0
     
     int i,j; // Contadores
     char *new_strg; //Nova string que contera as strings concatenadas
     
     /* Pega o tamanho das strings */
     len_strg1=strlen(str1);
     len_strg2=strlen(str2);
     len_strg3=strlen(str3);
     
     tam_total=len_strg1+len_strg2+len_strg3;
     tam_total=tam_total+1; //Adiciona mais um pois temos que colocar o '\0' para indicar o final da string
     
     new_strg=(char *)malloc(tam_total*(sizeof(char))); //Alocamos memoria pra nova string
     
     j=0;
     for(i=0;i<len_strg1;i++) //Lemos a string 1 e colocamos na nova string
     {
         new_strg[j]=str1[i];
         j++;
     }
     for(i=0;i<len_strg2;i++) //Lemos a string 2 e colocamos na nova string
     {
         new_strg[j]=str2[i];
         j++;
     }
     for(i=0;i<len_strg3;i++) //Lemos a string 3 e colocamos na nova string
     {
         new_strg[j]=str3[i];
         j++;
     }
     new_strg[j]='\0'; // Indicamos o final da string com '\0'
     return new_strg;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem outro modo, mas usando ponteiros:

 

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
char *strs[] = {"string1",
"string2 ==== 000000 77777",
"string3 ------"};

int n_bytes = 0;

for(int i=0;i<3;i++)
n_bytes+=strlen(strs[i]);

char *nova = (char*)malloc(n_bytes);
if (nova == NULL) return 1;

int tamanho;

for(int i=0;i<3;i++){
tamanho = (i == 0)? 0: strlen(nova);
memmove(&nova[tamanho] , strs[i], strlen(strs[i])*sizeof(char));
}

printf("%s\n", nova);
free(nova);
nova = NULL;
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.