3
respostas

O meu for não funciona

#include<stdio.h> Montei esse código simples e na hora que vou executar aparece pra eu digitar o nome e o sexo, mas do segundo pra frente tem campo pra eu digitar apenas o sexo. Alguém pode me ajudar?

int main(){

char nome[60];
char sexo;

for(int i=0; i<5; i++){
    printf("Informe o seu nome:\n");
    gets(nome);

    printf("Informe seu sexo:\n");
    scanf("%c",&sexo);
}

}

3 respostas

Olá, Pamella. Tudo bom?

Segue um trecho do manual do gets (man gets)

*BUGS
       Never use gets().  Because it is impossible to tell without
       knowing the data in advance how many characters gets() will
       read, and because gets() will continue to store  characters
       past  the  end  of the buffer, it is extremely dangerous to
       use.  It has been used to  break  computer  security.   Use
       fgets() instead.

       For  more  information, see CWE-242 (aka "Use of Inherently
       Dangerous Function")  at  http://cwe.mitre.org/data/defini‐
       tions/242.html*

Seguindo a dica do próprio manual da função, recomendo buscar alguma alternativa mais "user friendly" para pegar entradas do usuário.

Olá

Boa Tarde!

Agradeço o retorno mas ainda sim não resolveu o problema, infelizmente.

Alguma sugestão?

Opa, A sugestão que eu dou é a mesma do manual, usar o fgets.

#include <stdio.h>

int main(void)
{
    char frase[100];
    fgets(frase, 100, stdin);

    printf("\n%s\n", frase);
}

Você também pode pesquisar sobre o readline(), mas esta pode ser um pouco mais complexa principalmente para limpar os vazamentos de memória.