Project-Scylla/KNR C/ex1_10_goto.c

35 lines
837 B
C
Raw Normal View History

#include <stdio.h>
#include <stdlib.h>
/*A really silly way to complete exercise 1-10 of KNR C*/
int main(){
2025-08-14 22:05:46 +00:00
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*/
2025-08-14 22:05:46 +00:00
printf ("Error: No data to parse. \n Exiting.");
EXIT_FAILURE; /*Exit if there is no data to parse.*/
}
2025-08-14 22:05:46 +00:00
loop_start: /*Goto will circle back to the next line if a != EOF*/
if (a == '\t' || a == '\b' || a == '\\'){
if (a == '\t')
printf("\\t");
2025-08-14 22:07:31 +00:00
if (a == '\b')
printf("\\b");
if (a == '\\')
printf ("\\\\");
} else {
putchar(a);
}
a = getchar();
2025-08-14 22:05:46 +00:00
if (a != EOF) /*Only trigger next loop if 'a' contains valid data.*/
goto loop_start;
return 0;
}