Jump to content

Concatenação de strings


Go to solution Solved by kokin,

Recommended Posts

Posted

Sou novo aluno de programaçao ? e comecei a aprender a pouco tempo as strings e tou com muita dificuldade neste exercicio.Não me rezondem porque eu não entendo de strings a 100% aprendi ontem a mexer com elas e tenho o seguinte exercicio para o fazer.

Já fix o andamento das strings. So que não sei fazer a junção delas(concatenação) na variavel maximo.Tentei de varias formas.O que me deve faltar? ?

Sei que tem muita coisa ai errada mas é normal.

Exercicio:

Escrever um programa que leia sucessivas strings até ser especificado “.”. Neste momento o programa deve escrever uma única string que consiste na concatenação de todas as strings lidas. Cada string deverá ter no máximo 20 caracteres. Após a concatenação, no máximo a string pode ter 100 caracteres. Podes definir variáveis para estes máximos da seguinte forma:

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

#define my_scanf(text, var) \
  scanf(text, var); \
  getchar();

void my_scanf_long(char* s, int n)
{
fgets(s, n, stdin);
s[strlen(s)-1] = '\0';
}

int main() {
int i;
char parar=".", texto[20], maximo[100]="";

// Digitaçao do texto e o andamento Infinito
for (i=0;i<texto;i++) {
	printf("\nDigite uma String:");
	my_scanf_long(texto, 20);
}
if(strlen(texto)==strlen(parar)){
	strcpy (maximo, texto);
	strcat(texto, parar);
}

printf("A string final e : %s", texto);

return 0;
}

Tou com muitas dificuldades espero que me ajudem e se não for pedir muito expliquem-me

🙂

Posted

Deves usar o strcat, para adicionar texto a maximo.

E deves realizar esta operação de cada vez que lês uma string. Actualmente estás a ler uma string, e a ler outra por cima, sem que tenhas guardado a string anterior noutro lado.

Precisas também de alguma coisa dentro do ciclo que te diga quando parar (deves ver se a string lida é igual a ".").

Posted
int main() {
int i;
char parar=".", texto[20], maximo[100]="";

// Digitaçao do texto e o andamento Infinito
for (i=0;i<texto;i++) {
	printf("\nDigite uma String:");
	my_scanf_long(texto, 20);
            strcat(texto, maximo);
}
             if(strlen(texto)==strlen(parar)){
	strcat(texto, maximo);
}

printf("A string final e : %s", texto);

return 0;
}

E assim ou algo ta mal a ai?

o parar já não esta a querer dizer ´.´como eu declarei a variavel em char

char parar=".", texto[20], maximo[100]="";

?

Posted

tipo o meu objetivo e criar um programa que leia sussecivas strigs na vertical.

texto é a escrita das strings.

Casa  (So pode ter ate 20 catecteres)

Rato  (So pode ter ate 20 catecteres)

Teclado  (So pode ter ate 20 catecteres)

Mesa  (So pode ter ate 20 catecteres)

etc    (So pode ter ate 20 catecteres)

"infinito"

Quando introduzir o ´.´(ponto o programa me fara a conjunção de todas a strings numa so)

ou seja:  CasaRatoTecladoMesa(Mas isto não poderá passar de 100 carecteres)

  • Solution
Posted
#include <stdio.h>
#include <string.h>


main() {
char nome[20], maximo[100]="", parar[10]= "." ;
do{
    	printf("Escreve um nome: ");
    	
    	gets(nome);
    	if(strlen(nome)<=20){      
                   strcat(maximo, nome);                      
        }else printf("nome com mais de 20 caracteres\n");
}while((strcmp(nome, parar)!=0) && strlen(maximo)<100);
//Declaracao dos mesmos.
printf("Conjucao= %s Numero de caracteres[%d]\n\n\n\n", maximo, strlen(maximo));
return 0;
}

Já consegui.

Thx tava me a entalar todo mas depois percebi que com o while resolvia me a situação...

Com o ciclo for leva me muits condições das quais já me estava a entalar.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.