Ir para conteúdo
Fórum Script Brasil
  • 0

Duvidas - String


LucasAntonioCarneiro

Pergunta

Pessoal,

Estou tentando colocar várias strings em um mesmo vetor, porém só estou conseguindo pegar lixo.

Quero pegar duas variáveis separadas , cada uma contendo uma string e armazenar as duas variáveis em uma terceira variável. como posso fazer isso?

char i[7]="Lucas;";

char t[10]= "Carneiro";

char n[17];

int k=0;

int p;

for (p=0;p<17;p++){

n[p]=i[p];

if (p>9)

{

n[p]= k;

k=k+1;

}

}

printf ("O valor junto %s\n",n);

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Em c não temos strings como tipos de dados, então para lermos uma sequencia de caracteres temos que colocar no final o caractere terminador '\ 0'.

Por isso temos que declarar seu tamanho com um caractere a mais.

Ex:

char nome[7] = "Daniel"; // é o mesmo que {'D', 'a', 'n', 'i', 'e, 'l', '\ 0'};

todas as funções que trabalham com string trabalham até encontrar esse caractere. então a string n acima ficaria assim

{'L', 'u', 'c', 'a', 's', ';', '\ 0', 'C', 'a', 'r', 'n', 'e', 'i', 'r', 'o', '\ 0'};

a função printf() só vai ler até o primeiro caractere terminador da string ou seja Lucas; '\ 0'. Ops encontrou o caractere a string acaba aqui!

aqui vai o código certo

#include <stdio.h>

int
main()
{
    char i[7]="Lucas;";
    char t[10]= "Carneiro";
    char n[15]; //Menos dois caracteres '\ 0'
    int k;
    int p;
    for (p = 0; i[p] != '\ 0'; p++)//enquanto não for o final de i
        n[p] = i[p];//atribui do indice 0 em diante
    // p = 6
    for(k = 0; t[k] != '\ 0'; k++, p++)//enquanto não for o final de t
        n[p] = t[k];//atribui do indice 6 em diante
    // p = 15
    n[p] = '\ 0';
    printf ("O valor junto %s\n",n);
}

Obs: o caractere '\ 0' se escreve junto, mas tive problemas com o html ao enviar esse post e aí separei para você vê-lo

Editado por Dan Oliveira
Link para o comentário
Compartilhar em outros sites

  • 0

Daniel,

Muito obrigado, agora entendi tudo. Eu tinha imaginado que ela estava armazenando isso, mas não tinha certeza.

int

main()

{

char i[7]="Lucas ";

char t[10]= "Carneiro";

char n[16]; //Menos dois caracteres '\ 0'

int k;

int p;

for (p = 0; i[p] != ''; p++){//enquanto não for o final de i

n[p] = i[p];//atribui do indice 0 em diante

// p = 6

for(k = 0; t[k] != ''; k++){//enquanto não for o final de t

n[p+k+1] = t[k];//atribui do indice 6 em diante

// p = 15

}

}

n[p+k]='';

printf ("%s\n",n);

system("PAUSE");

return 0;

}

O codigo correto fica assim, mas foi de grande ajuda o que você escreveu.

Obrigado

Editado por LucasAntonioCarneiro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...