c语言文件出力问题
#include <stdio.h>void disp(FILE *f, char c){
if(0x20<=c && c<=0x7e){
fputc(c,f);
} else {
fputc('.',f);
}
}
main(){
char string[2][100];
int c,k;
FILE *fpi,*fpo;
printf("enter input filename: ");
scanf("%s",&string[0]);
printf("enter output filename: ");
scanf("%s",&string[1]);
if((fpi=fopen(string[0],"r"))==NULL){
fprintf(stderr,"cannot open %s\n",string[0]);
exit(1);
}
if ((fpo=fopen(string[1],"w"))==NULL){
fprintf(stderr,"cannot open %s\n",string[1]);
exit(1);
}
k=0;
while((c=fgetc(fpi))!=EOF){
k++;
fprintf(fpo," %02x",c);
disp(fpo,c);
if(k%16==0){
fprintf(fpo,"\n");
}
}
fclose(fpi);
fclose(fpo);
}
上面这个是老师给的程序,出力,然后做成个dat文件,把里面的字母全部变成符号,然后字母旁边是那个相对应的符号,就变成了下面这样
23# 69i 6en 63c 6cl 75u 64d 65e 20 3c< 73s 74t 64d 69i 6fo 2e.
68h 3e> 0a. 0a. 76v 6fo 69i 64d 20 64d 69i 73s 70p 28( 46F 49I
4cL 45E 20 2a* 66f 2c, 20 63c 68h 61a 72r 20 63c 29) 7b{ 0a.
20 20 69i 66f 28( 300 78x 322 300 3c< 3d= 63c 20 26& 26& 20
63c 3c< 3d= 300 78x 377 65e 29) 7b{ 0a. 20 20 20 20 66f 70p
75u 74t 63c 28( 63c 2c, 66f 29) 3b; 0a. 20 20 7d} 20 65e 6cl
73s 65e 20 7b{ 0a. 20 20 20 20 2f/ 2a* 20 300 78x 322 300
(中略)
fa. 28( c9. bd. bc. a8. b2. c4. c7. bd. a4. ca. be. ec. b9. e7.
29) a4. f2. bd. d0. ce. cf. 20 2a* 2f/ 0a. 20 20 20 20 69i
66f 28( 6bk 25% 311 366 3d= 3d= 300 29) 7b{ 20 2f/ 2a* 20 311
366 ca. b8. bb. fa. a4. b4. a4. c8. a4. cb. b2. fe. b9. d4. a4.
f2. bd. d0. ce. cf. 20 2a* 2f/ 0a. 20 20 20 20 20 20 66f
70p 72r 69i 6en 74t 66f 28( 66f 70p 6fo 2c, 22" 5c\ 6en 22" 29)
3b; 0a. 20 20 20 20 7d} 0a. 20 20 7d} 0a. 20 20 66f 63c
6cl 6fo 73s 65e 28( 66f 70p 69i 29) 3b; 0a. 20 20 66f 63c 6cl
6fo 73s 65e 28( 66f 70p 6fo 29) 3b; 0a. 7d} 0a.
现在老师要我们改成下面这样怎么改啊~各位求教啊~很急~谢谢~
23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e | #include <stdio.
68 3e 0a 0a 76 6f 69 64 20 64 69 73 70 28 46 49 | h>..void disp(FI
4c 45 20 2a 66 2c 20 63 68 61 72 20 63 29 7b 0a | LE *f, char c){.
20 20 69 66 28 30 78 32 30 3c 3d 63 20 26 26 20 | if(0x20<=c &&
63 3c 3d 30 78 37 65 29 7b 0a 20 20 20 20 66 70 | c<=0x7e){. fp
75 74 63 28 63 2c 66 29 3b 0a 20 20 7d 20 65 6c | utc(c,f);. } el
73 65 20 7b 0a 20 20 20 20 2f 2a 20 30 78 32 30 | se {. /* 0x20
20 a1 c1 20 30 78 37 65 20 b0 ca b3 b0 a4 ce a5 | .. 0x7e .......
b3 a1 bc a5 c9 a4 cf a5 b3 a5 f3 a5 c8 a5 ed a1 | ................
bc a5 eb a5 b3 a1 bc a5 c9 a4 ca a4 ce a4 c7 b2 | ................
e8 cc cc c9 bd bc a8 a4 c7 a4 ca a4 a4 20 2a 2f | ............. */
0a 20 20 20 20 66 70 75 74 63 28 27 2e 27 2c 66 | . fputc('.',f
29 3b 0a 20 20 7d 0a 7d 0a 0a 6d 61 69 6e 28 29 | );. }.}..main()
(中略)
20 66 70 72 69 6e 74 66 28 66 70 6f 2c 22 20 25 | fprintf(fpo," %
30 32 78 22 2c 63 29 3b 0a 20 20 20 20 64 69 73 | 02x",c);. dis
70 28 66 70 6f 2c 63 29 3b 20 2f 2a 20 ca b8 bb | p(fpo,c); /* ...
fa 28 c9 bd bc a8 b2 c4 c7 bd a4 ca be ec b9 e7 | .(..............
29 a4 f2 bd d0 ce cf 20 2a 2f 0a 20 20 20 20 69 | )...... */. i
66 28 6b 25 31 36 3d 3d 30 29 7b 20 2f 2a 20 31 | f(k%16==0){ /* 1
36 ca b8 bb fa a4 b4 a4 c8 a4 cb b2 fe b9 d4 a4 | 6...............
f2 bd d0 ce cf 20 2a 2f 0a 20 20 20 20 20 20 66 | ..... */. f
70 72 69 6e 74 66 28 66 70 6f 2c 22 5c 6e 22 29 | printf(fpo,"\n")
3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 66 63 | ;. }. }. fc
6c 6f 73 65 28 66 70 69 29 3b 0a 20 20 66 63 6c | lose(fpi);. fcl
6f 73 65 28 66 70 6f 29 3b 0a 7d 0a | ose(fpo);.}.