Jump to content
Fórum Script Brasil
  • 0

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


enginner
 Share

Question

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

2 answers to this question

Recommended Posts

  • 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 ! ! !

Edited by Felipe-Petrópolis
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.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...