Jump to content
Fórum Script Brasil
  • 0

Duvidas - String


LucasAntonioCarneiro

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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

Edited by Dan Oliveira
Link to comment
Share on other 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

Edited by LucasAntonioCarneiro
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...