#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv)
{
char c;
c = fgetc(stdin);
while(c != EOF){
if(isalnum(c))
printf("%c", c);
else
c = fgetc(stdin);
}
return 1;
}
Sin ser ningún lince...
Lees de un archivo sin previa apertura del mismo. Además donde esta la función isalnum?
#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv)
{
char c;
c = fgetc(stdin);
while(c != EOF){
if(isalnum(c))
printf("%c", c);
else
c = fgetc(stdin);
}
return 1;
}
1- Utiliza etiquetas de codigo cuando publiques codigo en el foro
2- Te recomendaria que aprendas a depurar tus programas
Tu Problema:
Necesitas eliminar el "else" de tu condicional.
La linea: c = fgetc(stdin); necesita ejecutarse siempre, de lo contrario tu codigo lee un caracter y en caso de ser alfanumerico se ejecuta el printf pero nunca el fgetc, por lo que el puntero del stream no se incrementa, en la proxima iteracion se vuelve a leer exactamente el mismo caracter anterior y asi infinitamente sin llegar nunca al EOF
Cita de: fary en 26 Marzo 2020, 16:10 PM
Sin ser ningún lince...
Lees de un archivo sin previa apertura del mismo. Además donde esta la función isalnum?
El "archivo" del que lee es stdin, es decir, la entrada estándar (teclado) y la función isalnum() está en la librería <ctype.h>
Sin ser un lince tampoco... :rolleyes: :rolleyes:
El problema como ya dijo @ThunderCls es que sobra el else de ese condicional para que siempre se pueda ingresar un nuevo carácter al finalizar cada vuelta.
Cita de: YreX-DwX en 26 Marzo 2020, 20:45 PM
El "archivo" del que lee es stdin, es decir, la entrada estándar (teclado) y la función isalnum() está en la librería <ctype.h>
Sin ser un lince tampoco... :rolleyes: :rolleyes:
El problema como ya dijo @ThunderCls es que sobra el else de ese condicional para que siempre se pueda ingresar un nuevo carácter al finalizar cada vuelta.
:-[ :-[ :-[ :-[
Pues sí, metí bién la pata sí.
saludos de casi lince. :laugh: :xD