Convertidor de C a ASCII printf Entero extra
Tratando de crear un convertidor C simple de char a ASCII, pero el resultado imprime “10” después de cada printf. ¿Alguna idea para resolver esto?
Compilador: mingw64/gcc
Fuente:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char argc;
printf("Ingrese ASCII: ");
do {
scanf("%c", &argc);
printf("%d\n", argc);
} while (argc != 'Z');
}
Salida:
$ ./ascii.exe
</string.h></stdlib.h></stdio.h>
Ingrese ASCII: A
65
10
S
83
10
D
68
10
V
86
10
X
88
10
Z
90
davy.ai
El problema se debe al caracter de nueva línea (
\n
) que queda en el búfer de entrada después de la llamadascanf
. Cuandoscanf
lee el carácterZ
, también lee el caracter de nueva línea del búfer, que luego se imprime como10
en la sentenciaprintf
dentro del bucle.Para solucionarlo, puede agregar un espacio antes del especificador de formato
%c
en la llamada ascanf
. Esto le indica ascanf
que omita cualquier caracter de espacio en blanco en el búfer de entrada antes de leer el caracter, incluido el caracter de nueva línea.Aquí está el código actualizado:
Esto debería dar la salida esperada sin el extra
10
después de cada caracter.</string.h></stdlib.h></stdio.h>