LucasAntonioCarneiro Posted November 20, 2012 Report Share Posted November 20, 2012 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); Quote Link to comment Share on other sites More sharing options...
0 Dan Oliveira Posted November 20, 2012 Report Share Posted November 20, 2012 (edited) 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 November 20, 2012 by Dan Oliveira Quote Link to comment Share on other sites More sharing options...
0 LucasAntonioCarneiro Posted November 21, 2012 Author Report Share Posted November 21, 2012 (edited) Daniel,Muito obrigado, agora entendi tudo. Eu tinha imaginado que ela estava armazenando isso, mas não tinha certeza.intmain(){ 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 November 21, 2012 by LucasAntonioCarneiro Quote Link to comment Share on other sites More sharing options...
Question
LucasAntonioCarneiro
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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.