// MAIN. int main(int argc, char **argv) { // Referencia al archivo que se leerá. FILE *entrada; // Abrir el archivo de entrada. entrada = fopen(argv[1], "r"); if(entrada == NULL) { fprintf(stdout, "Error al leer archivo de entrada.\n"); return 1; } else if(argv[2] == NULL) { fprintf(stdout, "Ingrese parámetro de salida.\n"); } else { if(strcmp(argv[2], "-d") == 0) { Decimal(entrada); // Imprimir en formato decimal. } else if(strcmp(argv[2], "-o") == 0) { Octal(entrada); // Imprimir en formato octal. } else if(strcmp(argv[2], "-x") == 0) { Hexadecimal(entrada); // Imprimir en formato hexadecimal. } } return 0; }
/*ARGSUSED*/ Object Read_Char (Object port, int chr, int konst) { int c, str; FILE *f; char buf[10], *p = buf; f = PORT(port)->file; str = PORT(port)->flags & P_STRING; Reader_Getc; if (c == EOF) Reader_Sharp_Eof; *p++ = c; while (1) { Reader_Getc; if (c == EOF) Reader_Sharp_Eof; if (Whitespace (c) || Delimiter (c)) break; if (p == buf+9) Reader_Error (port, "syntax error in character constant"); *p++ = c; } Reader_Ungetc; if (p == buf+1) return Make_Char (*buf); *p = '\0'; if (p == buf+3) { for (c = 0, p = buf; p < buf+3 && Octal (*p); p++) c = c << 3 | (*p - '0'); if (p == buf+3) return Make_Char (c); } for (p = buf; *p; p++) if (isupper (*p)) *p = tolower (*p); if (strcmp (buf, "space") == 0) return Make_Char (' '); if (strcmp (buf, "newline") == 0) return Make_Char ('\n'); if (strcmp (buf, "return") == 0) return Make_Char ('\r'); if (strcmp (buf, "tab") == 0) return Make_Char ('\t'); if (strcmp (buf, "formfeed") == 0) return Make_Char ('\f'); if (strcmp (buf, "backspace") == 0) return Make_Char ('\b'); Reader_Error (port, "syntax error in character constant"); /*NOTREACHED*/ }
Object Read_String (Object port, int konst) { register FILE *f; register int n, c, oc, str; Read_Reset (); f = PORT(port)->file; str = PORT(port)->flags & P_STRING; while (1) { Reader_Getc; if (c == EOF) { eof: Reader_Tweak_Stream; Reader_Error (port, "end of file in string"); } if (c == '\\') { Reader_Getc; switch (c) { case EOF: goto eof; case 'b': c = '\b'; break; case 't': c = '\t'; break; case 'r': c = '\r'; break; case 'n': c = '\n'; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': oc = n = 0; do { oc <<= 3; oc += c - '0'; Reader_Getc; if (c == EOF) goto eof; } while (Octal (c) && ++n <= 2); Reader_Ungetc; c = oc; } } else if (c == '"') break; Read_Store (c); } return General_Make_String (Read_Buf, Read_Size, konst); }