preenchendo um vetor. ERRO! [RESOLVIDO]

1. preenchendo um vetor. ERRO! [RESOLVIDO]

David Cesar
David_pc

(usa Outra)

Enviado em 08/04/2009 - 15:17h

Por que esse código não funciona?





int main()
{
char letra[100];
int i=0;
letra[i]='a';
while (letra[i] != 'x')
{
i++;
printf("Digite uma letra:");
scanf("\n%c",letra[i]);
}
printf("%s", letra);
return(0);
}

Eu esperava que o scanf fosse ler cada caracter dentro de cada posição do vetor, mas para minha surpresa isso não aconteceu. Eu sei que eu poderia usar o "%s" para ler a string de uma vez mas eu gostaria de ler caracter por caracter.

saída

segmentation fault <core dumped>



  


2. Re: preenchendo um vetor. ERRO! [RESOLVIDO]

Felipe dos Santos Pinheiro
fellkevin

(usa Ubuntu)

Enviado em 08/04/2009 - 18:10h

Meu amigo o seu problema ao meu ver foi mais um problema de lógica.Como o objetivo é ler uma seguencia de caracter e depois exibi-los eu acho q esse codigo vai ser util:

#include <stdio.h>
#define MAX 10 // o MAX é so pra facilitar a manutenção do programa no futuro//

int main()
{
char letra[MAX];
int i=0;
while (i<=MAX)//no codigo anterior a condição dentro do while ñ fazia o menor sentido uma vez q ele deveria ler qualquer tipo de caracter//
{
if(i==MAX)//na ultima posição do vetor ele coloca o caracter q indica o final da string//
{
letra[MAX]=\ 0;
break;
}
printf(" Digite uma letra:");
scanf("\n%c",&letra[i]);
i++;
}
printf("%s", letra);
return 0;
}

Ao meu ver era isso q vc queria é claro q exixte outra maneira pelo q vc falou foi o jeito q eu encontrei se eu estiver errado me desculpa pois ainda estou aprendendo sobre essa linguagem na faculdade.



3. Re: preenchendo um vetor. ERRO! [RESOLVIDO]

Marcos Fagner
fagn

(usa Arch Linux)

Enviado em 08/04/2009 - 19:16h

Cara, pro seu código funcionar faltou o '&' antes de letra[i]. Coloca assim que funciona:
scanf(" \n%c",&letra[i]);


4. Re: preenchendo um vetor. ERRO! [RESOLVIDO]

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 08/04/2009 - 19:50h

não funciona por 2 detalhes:

faltou o & no scanf
está
scanf("\n%c",letra[i]);
e deveria ser
scanf("\n%c",&letra[i]);

isso fará com que o erro deixe de existir.

Para imprimir corretamente, faltou o \zero antes do printf
letra[i]='\ 0' se não quiser que o x faça parte da string ou
letra[++i]='\ 0' se quiser que o últimocaracter impresso seja o x.


5. Re: preenchendo um vetor. ERRO! [RESOLVIDO]

David Cesar
David_pc

(usa Outra)

Enviado em 09/04/2009 - 01:02h

galera foi mal ae, meu erro foi bobo mesmo






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts