Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- // Debe usarse después de adquirir un escalar o un caracter.
- void flush_stdin() {
- while(getchar() != '\n');
- }
- // A usarse después de adquirir una cadena.
- // string es la cadena que se ha adquirido.
- // erase_new_line si es true convierte el último salto de línea en un carácter nulo,
- // si es false lo deja tal cual está.
- void flush_after_get_string(char *string, _Bool erase_new_line) {
- char *c = strrchr(string, '\n');
- if(c) {
- if(erase_new_line) {
- *c = '\0';
- }
- } else {
- flush_stdin();
- }
- }
- int main() {
- int i;
- char c;
- char s[15];
- // un escalar: usar flush_stdin()
- printf("int >> ");
- scanf("%d", &i);
- flush_stdin();
- // un carácter: usar flush_stdin()
- printf("\nchar >> ");
- scanf("%c", &c);
- flush_stdin();
- // una cadena: usar flush_after_get_string
- printf("\nstring >> ");
- fgets(s, 15, stdin);
- flush_after_get_string(s, 1); // Prueba a cambiar el 1 por un 0
- puts(s); // y ve como se separa la cadena
- puts("fin"); // (si llegó a adquirir en '\n')
- }
Add Comment
Please, Sign In to add comment