Jump to content
AprendendoC

Concatenando Strings

Recommended Posts

AprendendoC

Elaborar um programa que receba o nome, telefone (em formato string) e

endereço de uma pessoa e depois concatene essas três informações em uma única

string. Mostrar a string resultante.

pessoal nao to conseguindo fazer o programa concatenar as tres strings...  eis o codigo abaixo, axo que eu deveria armazenar as duas primeiras strings numa variavel,e concatenar a string armazenada nessa varialvel com a ultima string q seria o telefone! estou certo ou errado??

int _tmain(int argc, _TCHAR* argv[])
{
char nome[255];
char endereço[255];
char telefone[255];
printf("Digite seu Nome: ");
gets(nome);
printf("Digite seu Endereco: ");
gets(endereço);
printf("Digite seu Telefone: ");
gets(telefone);
strcat(nome,endereço);
printf("%s" ,nome);
return 0;
}

pessoal mudei o codigo pra ele concatenar 3 strings mas ele da erro!

int _tmain(int argc, _TCHAR* argv[])
{
char nome[255];
char endereço[255];
char telefone[255];
char dados[255];
printf("Digite seu Nome: ");
gets(nome);
printf("Digite seu Endereco: ");
gets(endereço);
printf("Digite seu Telefone: ");
gets(telefone);
// concatena as strings
strcat(dados, nome);
strcat(dados, endereço);
strcat(dados, telefone);
printf("%s", dados);
return 0;
}

Share this post


Link to post
Share on other sites
KTachyon

endereço?


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
bubulindo

Eu vejo uns problemas no teu programa... ocmo o KTachyon apontou, não se usa cedilhas nas variáveis. Até porque duvido que compile. LOLOL

Depois tens isto

char nome[255];
   char endereço[255];
   char telefone[255];
   char dados[255];

Segundo o que eu percebi tu queres algo assim dados = nome + endereco + telefone. Então, se olhares para o tamanho de variáveis que declaraste, dados deveria ser capaz de conter todas as strings... sendo assim, 255 +255+255 = 765. Dados deveria ter no mínimo 765 posicões de memória.

Senão, imagina que o nome duma pessoa tem 100 caracteres, o endereco 150 e 0 numero de telefone tem 9... ias ter problemas ao colocar os dados na string porque não reservaste espaco suficiente para ela.

Eu sei que a probabilidade de tal acontecer é baixa... mas quando se programa não deves pensar nesses termos. Deves pensar que o sistema, mesmo que as pessoas coloquem lá algo desse género, deve continuar a funcionar correctamente.

Uma outra maneira que provavelmente te dará pontos extra, se isto for para um trabalho escolar é reservar memória suficiente para a string dados.

Defines todas as variáveis, pedes ao utilizador para introduzir o nome, morada e telefone. Calculas o tamanho de cada uma dessas strings e utilizas a funcão realloc para alocares o tamanho de memória que vais necessitar para o vector dados. Estás a ver a ideia, ou ainda não falaste das funcões de alocacão de memória?


include <ai se te avio>

Mãe () {

}

Share this post


Link to post
Share on other sites
tsrodrigues

Pelo que vejo aqui concordo com os reparos feitos em ambas as respostas já efectuadas. A meu ver o teu programa dá erro porque estás a querer juntar uma string com um vector de "lixo", isto acontece porque não declaras o vector quando o inicializas.

Pelo menos em C quando crias um vector do tipo:

char vect[100];

este vector é criado com qualquer coisa que não sabes o que é. E tal como sabes uma string, em C, é um vector de char em que o último caracter é '\0', assim sendo quando fazes a função strcat() e mandas para lá o vector dados ele dá erro porque o reconhece como um vector e não como uma string, uma vez que não possui o carcater '\0' no final. Nos outros vectores como já os usas na função gets() a partir desse momento o compilador reconhece-os como strings e aí podes utilizá-los nas funções de strings.

SOLUÇÃO:

Simples, quando crias o vector dados inicializa-o com uma string vazia, exemplo:

char dados[100] = "";

espero ter ajudado.

Share this post


Link to post
Share on other sites

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.