Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alekatao

Erro ao usar scanf seguidos

Recommended Posts

Ao usar o código abaixo, com as entradas:
algoritmos

scc1111

Douglas

 

A saída é "scc1111Douglas - algoritmos - Douglas"

Parece que a variável codigo está concatenada com a professor. Como faço pra resolver isso? Tentei com a funçao gets, mas acontece a mesma coisa.

scanf("%s",&nomeDisciplina);
scanf("%s",&codigo);
scanf("%s",&professor);
printf("%s - %s - %s\n",codigo, nomeDisciplina, professor);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso deve ser sujeira no buffer de entrada, por causa do enter ao digitar uma string.

Tente utilizar:

scanf("%*c");

O asterisco neste caso é um operador de supressão. Eles faz com que um caracter seja descartado, no caso, o \n do enter.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei usar isso que vc falou, mas a saída foi uns caracteres estranho ( que deve ser lixo).

Quando executo o código pela primeira vez funciona normalmente, mas a partir da segunda, começa o erro. Deve ser sujeira no buffer ( que no caso, pega o que é digitado na sequencia). só preciso achar como tirar isso



Encontrei o erro.

 

A variável codigo está declarada assim: char codigo[7];

Ou seja, uma string com 7 posições, de 0 a 6.

Porém quando ela recebe uma de tamanho 7, ocorre o erro.

Quando a variavel recebe uma string com tamanho menor que 7, o programa funciona corretamente.

Mudei o tamanho da string para 8 e resolvi o problema.



Valeu pela ajuda GBecker

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade em C não tem string, o que o pessoal faz é declarar uma matriz de char com duas dimensões e simular uma string. Você pode fazer isso:

 

char disciplina[6][30]; // você pode ter 6 disciplinas de 30 caracteres.

 

Daí no loop você usa apenas um índice.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.