Project-Scylla/KNR C/ex1_10_goto.c

35 lines
842 B
C

#include <stdio.h>
#include <stdlib.h>
/*A really silly way to complete exercise 1-10 of KNR C*/
int main(){
int a = getchar(); /*There is, unfortuately, no immediately obvious way to avoid repeating this since we need to initialize 'a' in order to have valid data for everything beyond this line*/
if (a == EOF){ /*Check whether first character is EOF*/
printf ("Error: No data to parse. \n Exiting.");
EXIT_FAILURE; /*Exit if there is no data to parse.*/
}
loop_start: /*Goto will circle back to the next line if a != EOF*/
if (a == '\t' || a == '\b' || a == '\\'){
if (a == '\t')
printf("\\t");
if (a == '\b'){
printf("\\b");
}
if (a == '\\')
printf ("\\\\");
} else {
putchar(a);
}
a = getchar();
if (a != EOF) /*Only trigger next loop if 'a' contains valid data.*/
goto loop_start;
return 0;
}