Compilar código c con bool sin usar el estándar c99
Intenté compilar un código usando una variable bool en C e incluí el encabezado stdbool pero cuando lo compilé no especifiqué que quiero compilarlo con el estándar c99 (por lo que fue compilado con ANSI C estándar) pero funcionó de todos modos. Me preguntaba por qué es eso? Aquí está el código:
#include <stdio.h>
#include <stdbool.h>
int main() {
char name[20];
printf("What's your name ? ");
gets(name);
printf("Nice to meet you %s.\n", name);
bool exit = false;
char c;
printf("Do you wish to exit the program ? (Y/N) ");
while (!exit) {
c = getchar();
if (c == '\n') {
continue;
}
printf("Do you wish to exit the program ? (Y/N) ");
if (c == 'Y' || c == 'y') {
exit = true;
}
}
printf("Have a nice day %s\n", name);
return 0;
}
También otra pregunta con respecto a mi código. En la parte donde se le pregunta si desea salir del programa, lo probé con la siguiente entrada: n n y
Y por alguna razón imprimió en la consola la pregunta por cuarta vez y no veo por qué. Lo configuré para que si la entrada es Y / y la siguiente iteración en el ciclo while no debería tener lugar, pero por alguna razón lo imprimió nuevamente, ¿alguien podría explicarme qué hice mal?
EDITAR: edité el código un poco e intenté probar cosas nuevas y me di cuenta de que con el siguiente código si la entrada del usuario es Y / y no saldrá del bucle:
#include <stdio.h>
#include <stdbool.h>
int main(int argc, char* argv[]) {
for(int i = 0; i < argc; i++)
printf("argv[%d] = %s\n", i, argv[i]);
char name[20];
printf("What's your name ? ");
gets(name);
char lastname[20];
printf("%s what's your last name ? ", name);
fgets(lastname, 20, stdin);
int age;
printf("%s %s what's your age? ", name, lastname);
scanf("%d", &age);
bool exit = false;
char c;
while (!exit) {
printf("Do you wish to exit the program ? (Y/N) ");
c = getchar();
getchar();
if (c == 'Y' || c == 'y')
exit = true;
}
printf("Have a nice day %s %s.\n", name, lastname);
return 0;
}
No sé por qué lo hice, pero agregué una llamada getchar () antes del ciclo while e intenté compilarlo de esta manera y luego el programa funcionó bien, a partir de esto asumo que las funciones fgets \ scanf interfieren con la función getchar pero no estoy seguro de por qué alguien podría explicar?