Programa de Conversión Ascii; error de imprenta

He estado trabajando en este programa en C y no entiendo por qué está imprimiendo más allá del rango que indican los parámetros. Aquí está el programa, ¿alguien puede ayudarme? Además, ¿cómo obtengo la entrada para rechazar números que no están en el rango especificado? ¡Gracias por adelantado!

#include <stdlib.h>
#include <stdio.h>
#define LEN 64

int main(){

    char line[LEN];
    printf("Enter a #, 32-127: ");
    fgets(line,LEN,stdin);
    int i = atoi(line);

    printf("Enter a #, %d-127: ",i);
    fgets(line,LEN,stdin);
    int j = atoi(line);

    for(i;j;i++)
        printf("ASCII value of character %d: %c\n",i,i);

    return(EXIT_SUCCESS);
    }

preguntado el 29 de septiembre de 13 a las 22:09

No está claro lo que estás tratando de hacer. ¿Por qué pides 2 números? Si solo desea imprimir el valor ASCII, ¿por qué está utilizando un bucle for? Por favor explique. -

Esto no está causando su problema, pero en C principal debe declararse como principal (vacío). -

2 Respuestas

Debe comprender claramente qué está haciendo esta línea:

for(i;j;i++)

Más información sobre la instrucción for aquí

for (initialization; condition; increment){
       body
}

En tu código, j es tuyo condition. En C, zero == false y different from zero is true. Por consiguiente, j nunca llega a ser cero, por lo que el bucle se convierte en un bucle infinito.

Trate de explicar un poco más qué está tratando de lograr con la instrucción for para que podamos ayudarlo mejor.

Respondido el 29 de Septiembre de 13 a las 22:09

Su bucle "for" es incorrecto. En su lugar, intente algo como:

while ( i <= j ) {
   printf("ASCII value of character %d: %c\n",i,i);
   i++;
}

or

   for ( int idx = i; idx <=j; idx++) {
     printf("ASCII value of character %d: %c\n",idx,idx);
    }

Para la validación, simplemente haga una declaración "si" y compare los valores de entrada con cualquiera que sea su rango de validación. Déjate eso a ti.

Respondido el 29 de Septiembre de 13 a las 22:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.