[0000000001-0000000032] :: 2F2A0D0A2020457374652070726F6772616D61206D756573747261206C6F7320 <-> /*·· Este programa muestra los [0000000033-0000000064] :: 627974657320646520756E206172636869766F2028312062797465203C2D3E20 <-> bytes de un archivo (1 byte <-> [0000000065-0000000096] :: 322064696769746F7320656E2062617365203136292E0D0A2020466F726D6120 <-> 2 digitos en base 16).·· Forma [0000000097-0000000128] :: 64652075736F3A0D0A2020202020202020202020202020203E207675656C6361 <-> de uso:·· > vuelca [0000000129-0000000160] :: 206E6F6D6272655F6172636869766F5F6F726967696E616C206E6F6D6272655F <-> nombre_archivo_original nombre_ [0000000161-0000000192] :: 6172636869766F5F766F6C6361646F0D0A2A2F0D0A0D0A23696E636C75646520 <-> archivo_volcado··*/····#include [0000000193-0000000224] :: 3C7374646C69622E683E0D0A23696E636C756465203C737464696F2E683E0D0A <-> ··#include ·· [0000000225-0000000256] :: 23696E636C756465203C63747970652E683E0D0A0D0A23646566696E65204E43 <-> #include ····#define NC [0000000257-0000000288] :: 4C20333220202F2A206E756D65726F206465206361726163746572657320706F <-> L 32 /* numero de caracteres po [0000000289-0000000320] :: 72206C696E6561202A2F0D0A0D0A696E74206D61696E28696E7420617267632C <-> r linea */····int main(int argc, [0000000321-0000000352] :: 2063686172202A617267765B5D290D0A7B0D0A0946494C45202A6670496E2C0D <-> char *argv[])··{···FILE *fpIn,· [0000000353-0000000384] :: 0A0920202020202A66704F75743B0D0A0D0A09696E742020632C0D0A09202020 <-> ·· *fpOut;·····int c,··· [0000000385-0000000416] :: 20206E636C203D20302C206E6374203D20303B0D0A0D0A096368617220746578 <-> ncl = 0, nct = 0;·····char tex [0000000417-0000000448] :: 745B4E434C202B20315D3B0D0A0D0A09696E7420206E636C4D6178203D204E43 <-> t[NCL + 1];·····int nclMax = NC [0000000449-0000000480] :: 4C3B0D0A0D0A09696620286172676320213D203329207B0D0A09097072696E74 <-> L;·····if (argc != 3) {····print [0000000481-0000000512] :: 66282225733A20696E74726F64757A636120646F73206E6F6D62726573206465 <-> f("%s: introduzca dos nombres de [0000000513-0000000544] :: 206172636869766F5C6E222C20617267765B305D293B0D0A0909657869742831 <-> archivo\n", argv[0]);····exit(1 [0000000545-0000000576] :: 293B0D0A097D200D0A0D0A0969662028286670496E203D20666F70656E286172 <-> );···} ·····if ((fpIn = fopen(ar [0000000577-0000000608] :: 67765B315D2C20227262222929203D3D204E554C4C29207B0D0A09097072696E <-> gv[1], "rb")) == NULL) {····prin [0000000609-0000000640] :: 7466282225733A20696D706F7369626C6520616272697220656C206172636869 <-> tf("%s: imposible abrir el archi [0000000641-0000000672] :: 766F2025732070617261206C6563747572615C6E222C20617267765B305D2C20 <-> vo %s para lectura\n", argv[0], [0000000673-0000000704] :: 617267765B315D293B0D0A0909657869742832293B0D0A097D0D0A0D0A096966 <-> argv[1]);····exit(2);···}·····if [0000000705-0000000736] :: 20282866704F7574203D20666F70656E28617267765B325D2C20227762222929 <-> ((fpOut = fopen(argv[2], "wb")) [0000000737-0000000768] :: 203D3D204E554C4C29207B0D0A09097072696E7466282225733A20696D706F73 <-> == NULL) {····printf("%s: impos [0000000769-0000000800] :: 69626C6520616272697220656C206172636869766F2025732070617261206573 <-> ible abrir el archivo %s para es [0000000801-0000000832] :: 637269747572615C6E222C20617267765B305D2C20617267765B325D293B0D0A <-> critura\n", argv[0], argv[2]);·· [0000000833-0000000864] :: 0909657869742833293B0D0A097D0D0A0D0A09746578745B4E434C5D203D2027 <-> ··exit(3);···}·····text[NCL] = ' [0000000865-0000000896] :: 5C30273B0D0A0D0A092F2A204C65656D6F7320656C206172636869766F206465 <-> \0';·····/* Leemos el archivo de [0000000897-0000000928] :: 20656E7472616461202A2F0D0A097768696C6520282863203D20676574632866 <-> entrada */···while ((c = getc(f [0000000929-0000000960] :: 70496E292920213D20454F4629207B0D0A090D0A09092F2A20416C207072696E <-> pIn)) != EOF) {·······/* Al prin [0000000961-0000000992] :: 636970696F206465206C61206C696E656120736520696E646963616E206C6F73 <-> cipio de la linea se indican los [0000000993-0000001024] :: 20627974657320717565207365206D6F7374726172616E202A2F0D0A09096966 <-> bytes que se mostraran */····if [0000001025-0000001056] :: 20286E636C203D3D2030290D0A090909667072696E74662866704F75742C2022 <-> (ncl == 0)·····fprintf(fpOut, " [0000001057-0000001088] :: 5B2531302E3130642D2531302E3130645D203A3A20222C206E6374202B20312C <-> [%10.10d-%10.10d] :: ", nct + 1, [0000001089-0000001120] :: 206E6374202B206E636C4D6178293B0D0A09090D0A09092F2A20536920656C20 <-> nct + nclMax);········/* Si el [0000001121-0000001152] :: 6361726163746572206E6F20657320696D7072696D69626C6520736520706F6E <-> caracter no es imprimible se pon [0000001153-0000001184] :: 6520756E2070756E746F2063656E747261646F202A2F0D0A0909746578745B6E <-> e un punto centrado */····text[n [0000001185-0000001216] :: 636C2B2B5D203D2069737072696E74286329203F2063203A2027B7273B0D0A09 <-> cl++] = isprint(c) ? c : '·';··· [0000001217-0000001248] :: 090D0A09092F2A20457363726962696D6F7320656C206279746520656E20666F <-> ·····/* Escribimos el byte en fo [0000001249-0000001280] :: 726D6120646520646F732068657861646563696D616C6573202A2F200D0A0909 <-> rma de dos hexadecimales */ ···· [0000001281-0000001312] :: 667072696E74662866704F75742C202225322E3258222C2063293B0D0A0D0A09 <-> fprintf(fpOut, "%2.2X", c);····· [0000001313-0000001344] :: 092F2A20456E207375206361736F2C207465726D696E616D6F73206C61206669 <-> ·/* En su caso, terminamos la fi [0000001345-0000001376] :: 6C61202A2F0D0A0909696620282B2B6E63742025206E636C4D6178203D3D2030 <-> la */····if (++nct % nclMax == 0 [0000001377-0000001408] :: 29207B20202020202020202020202020200D0A090909667072696E7466286670 <-> ) { ·····fprintf(fp [0000001409-0000001440] :: 4F75742C2022203C2D3E2025735C6E222C2074657874293B0D0A0909096E636C <-> Out, " <-> %s\n", text);·····ncl [0000001441-0000001472] :: 203D20303B0D0A09097D0D0A090D0A09092F2A2044656A616D6F7320756E6120 <-> = 0;····}·······/* Dejamos una [0000001473-0000001504] :: 6C696E656120656E20626C616E636F2063616461204B6942202A2F0D0A090969 <-> linea en blanco cada KiB */····i [0000001505-0000001536] :: 6620286E637420252031303234203D3D2030290D0A090909667072696E746628 <-> f (nct % 1024 == 0)·····fprintf( [0000001537-0000001568] :: 66704F75742C20225C6E22293B0D0A097D0D0A0D0A092F2A2052656C6C656E61 <-> fpOut, "\n");···}·····/* Rellena [0000001569-0000001600] :: 6D6F7320636F6E20626C616E636F73206C6120756C74696D61206C696E656120 <-> mos con blancos la ultima linea [0000001601-0000001632] :: 79206C61207465726D696E616D6F73202A2F0D0A09696620286E636C203E2030 <-> y la terminamos */···if (ncl > 0 [0000001633-0000001664] :: 29207B0D0A09097768696C6520286E636C203C206E636C4D617829207B0D0A09 <-> ) {····while (ncl < nclMax) {··· [0000001665-0000001696] :: 0909746578745B6E636C2B2B5D203D202720273B0D0A090909667072696E7466 <-> ··text[ncl++] = ' ';·····fprintf [0000001697-0000001728] :: 2866704F75742C2022202022293B0D0A09097D0D0A090D0A0909667072696E74 <-> (fpOut, " ");····}·······fprint [0000001729-0000001760] :: 662866704F75742C2022203C2D3E2025735C6E222C2074657874293B0D0A097D <-> f(fpOut, " <-> %s\n", text);···} [0000001761-0000001792] :: 0D0A0D0A092F2A2046696E616C6D656E746520696E646963616D6F7320637561 <-> ·····/* Finalmente indicamos cua [0000001793-0000001824] :: 6E746F732062797465732073652068616E2070726F63657361646F202A2F0D0A <-> ntos bytes se han procesado */·· [0000001825-0000001856] :: 097072696E7466282225733A202531306420627974657320766F6C6361646F73 <-> ·printf("%s: %10d bytes volcados [0000001857-0000001888] :: 5C6E222C20617267765B305D2C206E6374293B0D0A0D0A09657869742830293B <-> \n", argv[0], nct);·····exit(0); [0000001889-0000001920] :: 0D0A0D0A7D0D0A <-> ····}··