user-0 提问: 用16进制表示文件内容

回复:
user: user-1
content: 引用 11 楼 u014320490 的回复:[quote=引用 8 楼 zjq9931 的回复:] [quote=引用 5 楼 u014320490 的回复:] 怎么没人了？？？？？？？？ 这个：(input=fopen(argv[1],"r")) 改成：(input=fopen(argv[1],"rb"))[/quote] 嗯，但是没什么用[/quote] 不行？ 我在VC6上试验过的啊，结果正确。

user: user-0
content: 引用 8 楼 zjq9931 的回复:[quote=引用 5 楼 u014320490 的回复:] 怎么没人了？？？？？？？？ 这个：(input=fopen(argv[1],"r")) 改成：(input=fopen(argv[1],"rb"))[/quote] 嗯，但是没什么用

user: user-1
content: 引用 9 楼 u014320490 的回复:可是程序是我自己编的，我并没有把什么0d去掉啊 这个：(input=fopen(argv[1],"r")) 改成：(input=fopen(argv[1],"rb"))  验证过了，这样就好了。

user: user-0
content: 可是程序是我自己编的，我并没有把什么0d去掉啊

user: user-1
content: 引用 5 楼 u014320490 的回复:怎么没人了？？？？？？？？ 这个：(input=fopen(argv[1],"r")) 改成：(input=fopen(argv[1],"rb"))

user: user-0
content: 还有，我执行程序的时候输入的是./a.out file，那么用gdb怎么调试呢?

user: user-1
content: 有些文本编辑器会吧0d去掉。 你用正规的16进制编辑器打开看一下有没有0d 引用 4 楼 u014320490 的回复:以下是完整代码： #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(int argc,char **argv) {     if(argc>2)     {         fprintf(stderr,"Invalid input!\n");         exit(1);     }     FILE *input;     if(argc==2)         if(NULL==(input=fopen(argv[1],"r")))         {             perror(argv[1]);             exit(1);         } //  else     fpos_t pos;     char s[17]={0};     char ss[17]={0};     char *sp=s;     long offset=ftell(input);     int n=0,i;     while(NULL!=fgets(s,17,input))     {         sp=s;         for(i=0;i<17;i++)             ss[i]=s[i];         printf("%06X ",offset);         while(*sp!=EOF)         {             if(n!=15)             {                 if(n%4!=0)                     printf("%02X",*sp++);                 else                     printf(" %02X",*sp++);                 n++;             }             else             {                 printf("%X  *",*sp);                 for(i=0;i<16;i++)                     if(ss[i]=='\n')                         break;                     else                         if(isspace(ss[i]) || !isprint(ss[i]))                             putchar('.');                         else                             putchar(ss[i]);                 printf("*\n");                 n=0;                 break;             }         }         fgetpos(input,&pos);         fsetpos(input,&pos);         offset=ftell(input);         for(i=0;i<17;i++)             s[i]=0;     } }

user: user-0
content: 怎么没人了？？？？？？？？

user: user-0
content: 以下是完整代码： #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(int argc,char **argv) {     if(argc>2)     {         fprintf(stderr,"Invalid input!\n");         exit(1);     }     FILE *input;     if(argc==2)         if(NULL==(input=fopen(argv[1],"r")))         {             perror(argv[1]);             exit(1);         } //  else     fpos_t pos;     char s[17]={0};     char ss[17]={0};     char *sp=s;     long offset=ftell(input);     int n=0,i;     while(NULL!=fgets(s,17,input))     {         sp=s;         for(i=0;i<17;i++)             ss[i]=s[i];         printf("%06X ",offset);         while(*sp!=EOF)         {             if(n!=15)             {                 if(n%4!=0)                     printf("%02X",*sp++);                 else                     printf(" %02X",*sp++);                 n++;             }             else             {                 printf("%X  *",*sp);                 for(i=0;i<16;i++)                     if(ss[i]=='\n')                         break;                     else                         if(isspace(ss[i]) || !isprint(ss[i]))                             putchar('.');                         else                             putchar(ss[i]);                 printf("*\n");                 n=0;                 break;             }         }         fgetpos(input,&pos);         fsetpos(input,&pos);         offset=ftell(input);         for(i=0;i<17;i++)             s[i]=0;     } }

user: user-2
content: 代码不全，恰恰是没有爆出来的那部分代码，让回车丢失了 爆出来的部分，没有问题

user: user-0
content: 引用 1 楼 ak47_wz 的回复:其实没有太看懂你要做什么和你要问什么^_^～。 大体意思就是模拟16进制查看器

user: user-3
content: 其实没有太看懂你要做什么和你要问什么^_^～。