Não entendi essa Void em C, poderiam analisar e me explicar ?
15/06/2021
0
#include <string.h>
#include <stdio.h>
void limpar_entrada(){
char c;
while ((c = getchar())) != '\n' && c != EOF) {}
}
int main(){
char nome1 [50];
char nome2 [50];
int idade1,idade2;
printf("Digite o nome da pessoa 1: ");
limpar_entrada();
fgets(nome1, 50, stdin);
printf("Digite a idade da pessoa 1: ");
scanf("%i", &idade1);
printf("Digite o nome da pessoa 2: ");
limpar_entrada();
fgets(nome2, 50, stdin);
printf("Digite a idade da pessoa 2: ");
scanf("%i", &idade2);
printf("Pessoa 1: %s\nIdade 1: %i\nPessoa 2: %s\nIdade 2: %i\n",nome1,idade1,nome2,idade2);
return 0;
}
Meu professor disse que a função fgets ela recebe até o ENTER do teclado, dessa forma ela recebe uma quebra de linha e toda informação anterior, então é necessário esse código nessa void para chamar uma função de limpeza dos dados, mas primeiramente que o código está idêntico, porém funciona no vídeo da aula dele mas não funciona no online c compiler por conta de um parênteses que ele fechou sem abrir antes, mas no vídeo dele está exatamente assim sem a abertura dos parênteses mesmo. Considerando na dúvida, também, eu não entendi a lógica do código dele, a principio ele declara uma char c e diz que enquanto "c = getchar()" (que eu não entendi para que serve essa função getchar) for diferente de quebra de linha EE não entendi a comparação , enquanto tudo isso for TRUE ele não executa nada embaixo, eu só estudei python e em python se você abrir um while e não der uma condição para ele parar, vira um loop, por que aqui não virou ?
#include <stdio.h>
void limpar_entrada(){
char c;
while ((c = getchar())) != '\n' && c != EOF) {}
}
int main(){
char nome1 [50];
char nome2 [50];
int idade1,idade2;
printf("Digite o nome da pessoa 1: ");
limpar_entrada();
fgets(nome1, 50, stdin);
printf("Digite a idade da pessoa 1: ");
scanf("%i", &idade1);
printf("Digite o nome da pessoa 2: ");
limpar_entrada();
fgets(nome2, 50, stdin);
printf("Digite a idade da pessoa 2: ");
scanf("%i", &idade2);
printf("Pessoa 1: %s\nIdade 1: %i\nPessoa 2: %s\nIdade 2: %i\n",nome1,idade1,nome2,idade2);
return 0;
}
Meu professor disse que a função fgets ela recebe até o ENTER do teclado, dessa forma ela recebe uma quebra de linha e toda informação anterior, então é necessário esse código nessa void para chamar uma função de limpeza dos dados, mas primeiramente que o código está idêntico, porém funciona no vídeo da aula dele mas não funciona no online c compiler por conta de um parênteses que ele fechou sem abrir antes, mas no vídeo dele está exatamente assim sem a abertura dos parênteses mesmo. Considerando na dúvida, também, eu não entendi a lógica do código dele, a principio ele declara uma char c e diz que enquanto "c = getchar()" (que eu não entendi para que serve essa função getchar) for diferente de quebra de linha EE não entendi a comparação , enquanto tudo isso for TRUE ele não executa nada embaixo, eu só estudei python e em python se você abrir um while e não der uma condição para ele parar, vira um loop, por que aqui não virou ?
Gustavo Martins
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)