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

(Resolvido) Dúvida com código! uso de string na estrutura for


enginner

Pergunta

Desculpem a minha falta de conhecimento, comecei a pouco tempo o estudo de C,
e como a maioria estou tendo problemas com um código com o uso de string na estrutura for.
O problema é o seguinte, perguntar o nome e a idade 10 vezes. // é apenas um exemplo.
Mas ele só faz isso no primeiro loop, já nos proximos ele so pede para entrar com a idade
ignorando o nome.
Aqui está o código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char nome[41];
int idade;
int c;
for (c = 1; c <= 10; c++)
{
printf("Digite seu nome: ");
gets(nome);
printf("Digite sua idade: ");
scanf("%c", &idade);
}
system("pause");
return 0;
}
Gostaria de saber qual o problema e como posso resolve-lo.
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá!

Olha sou iniciante em programação, mas vou tentar lhe ajudar . . .

- Bom com relação aos 2 Alertas seguintes, eles estão ocorrendo porque a função gets(), pode causar diversos problemas, por isso é aconselhável não utilizá-la:

- |15|warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638)

- |15|aviso: the `gets' function is dangerous and should not be used.

- |18|warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ - este alerta está acontecendo porque você usou o código de formatação errado para a entrada de dados, onde o correto seria usar %d.

- Além disso dependendo do caso um outro componente que pode estar causando o problema, é com relação a limpeza do buffer de entrada do teclado, leia estes posts para saber mais sobre: buffer do teclado, gets(); e fflush(stdin);

https://www.scriptbrasil.com.br/forum/topic/179418-meu-programa-so-le-a-primeira-variavel/

https://www.scriptbrasil.com.br/forum/topic/179317-ajuda-em-urna-eletronica-em-c/

http://forum.imasters.com.br/topic/537641-funcao-gets/

http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/

- Alem do mais o seu codigo não está trabalhando com vetores, depois de fazer as alterações acima tente colocar um printf depois do laço for para exibir o conteudo, o seu codigo está apenas trabalhando com simples variaveis, ou seja, da forma que você fez apenas o ultimo valor é o que vai existir nas variaveis que você esta usando, o correto seria declarar as suas variaveis char nome [ 10 ] [ 41 ] e int idade [ 10 ]

- Outra coisa tente evitar fazer chamadas ao sistema usando funções como system("pause"); alem de reduzir a portabilidade do codigo em diferentes plataformas, podem causar problemas dificeis de serem detectados, se a sua intenção era o de evitar que a tela do programa se fechasse logo apos ser aberta, você pode usar getchar(); no lugar de system("pause");

Dei uma corrigida no codigo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)

{
   char nome [ 10 ][ 41 ];
   int idade [ 10 ];

   int c;

   for ( c = 1; c <= 10; c++ )
      {
         printf ( "Digite seu nome: " );
         scanf ( "%s", nome [ c ] );

         printf ( "Digite sua idade: " );
         scanf ( "%d", &idade [ c ] );
      }

         getchar ();  
                
         return 0;
}

- Lembrete: o scanf(), tem uma caracteristica que compromete a entrada de strings neste caso (nomes) com espaços em branco e etc.... mas acho que isto está melhor explicado em um dos links que postei.

Bom por hora é só, preciso ir . . .

Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12

Espero Ter Ajudado ! ! !

Editado por Felipe-Petrópolis
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...