文件操作练习。注意B题的读取不能用struct。
D和谐词汇的题,输入是若干字符串,不以空行结束. 所以 gets(line); while (line[0]){... gets(line);}就会导致时间超限,代码在等空行,但in数据没有。应改为while(gets(line))。
/*文件练习B题. 读取一个包含7类数据的二进制文件,找到指定部分内容,并正确解释输出。
思路分析:主体框架是读取二进制文件, while (fread(buffer, buffLen, 1, infile) > 0){...}
因为二进制文件的记录长度是固定的,所以可以计算每条记录的长度,使用fseek直接定位到指定段;
所以用fseek的话,实际只需要读一次就可以。
但是这道题的特殊之处在于,一条记录内是顺序包含7种类型数据,是分多次写入,因此带来的麻烦是
虽然每段内容结构相同,但不能用struct进行整块读取。
因为struct的成员之间有内存空隙;除非源文件本身是用struct格式写入才行。
经测试,struct {含7种变量和数组}的长度为200, 但实际7种变量和数组的总长要小一些.
因此,可以直接定位,但必须分别读取,写出的代码冗长,且容易在变量名和输出格式上出错。
一种办法是:按总长度整块读取到字节数组中,然后再逐个定义对应类型的指针,按间接访问就可格式化解释输出。
例: char buffer[LEN];
int i=0; printf("%c\n", buffer[i]); i++;
short * hdPtr=&buffer[i]; printf("%hd\n", *hdPtr); i+=sizeof(short);
*/
Standing | User | Nick Name | Solved | TIME PENALTY | Mark | A | B | C | D |
1 | 2022211928 | 叶家聪 | 4 | 126:32:30 | 400 | 28:31:51 | 29:21:02 | 32:50:55 | 33:28:42 |
2 | 2022212497 | xx | 4 | 238:09:53 | 400 | 31:15:11 | 45:54:52 | 99:55:49 | 60:44:01 |
3 | 2021211233 | 李志博 | 4 | 259:46:00 | 400 | 48:36:00 | 54:13:54 | 71:16:30 | 71:59:36 |
4 | 2022211698 | 李佳伊 | 4 | 265:03:41 | 400 | 49:26:17 | 50:54:07 | 80:51:54 | 82:51:23 |
5 | 2022211480 | 马耳东风 | 4 | 442:02:35 | 400 | 104:13:01 | 106:28:07 | 107:52:30 | 109:28:57 |
6 | 2022212615 | luckyBUPT | 4 | 513:23:50 | 400 | 106:20:51 | 123:11:59 | 129:15:24 | 151:15:36 |
7 | 2022210792 | 『 』 | 4 | 520:32:42 | 400 | 58:04:43 | 152:33:47 | 153:09:57 | 154:04:15 |
8 | 2022210145 | Jeff | 4 | 604:17:48 | 400 | 127:45:50 | 128:46:41 | 143:57:40 | 202:47:37 |
9 | 2022210130 | 世间万物 | 4 | 634:11:39 | 400 | 146:59:36 | 147:33:34 | 167:02:01 | 166:56:28 |
10 | 2022211668 | 字禹润 | 4 | 709:55:09 | 400 | 105:17:46 | 105:53:32 | 222:38:34 | 273:05:17 |
11 | 2022211656 | 包诗峰 | 4 | 739:51:53 | 400 | 171:43:38 | 197:48:25 | 171:26:52 | 197:32:58 |
12 | 2022212036 | 2022212036 | 4 | 767:13:28 | 400 | 130:13:17 | 227:10:29 | 225:21:26 | 171:08:16 |
13 | 2022212139 | zzz | 4 | 820:41:40 | 400 | 175:05:04 | 194:53:02 | 220:40:00 | 228:23:34 |
14 | 2022210484 | 空条承太郎 | 4 | 844:45:20 | 400 | 149:30:38 | 214:09:22 | 219:42:27 | 250:02:53 |
15 | 2022210576 | idle | 4 | 938:12:08 | 400 | 203:03:44 | 292:08:12 | 219:24:43 | 217:15:29 |
16 | 2022212511 | 蔡逸文 | 4 | 967:50:31 | 400 | 460:11:59 | 103:36:27 | 195:02:44 | 201:59:21 |
17 | 2022210470 | 周宇洋 | 4 | 998:32:32 | 400 | 249:35:24 | 249:37:59 | 249:38:57 | 249:40:12 |
18 | 2022212702 | 宋健 | 4 | 1077:37:34 | 400 | 106:36:39 | 107:50:59 | 419:27:34 | 435:42:22 |
19 | 2022210583 | cc | 4 | 1084:02:41 | 400 | 239:26:30 | 240:09:10 | 275:19:58 | 325:07:03 |
20 | 2022210466 | 阿三太帅呀 | 4 | 1262:13:49 | 400 | 315:23:47 | 315:25:24 | 315:40:04 | 315:44:34 |
21 | 2022213782 | indication | 4 | 1299:50:23 | 400 | 250:06:00 | 294:05:22 | 458:05:25 | 292:53:36 |
22 | 2022212499 | 2022212499 | 4 | 1433:54:21 | 400 | 247:36:25 | 465:05:15 | 324:51:02 | 394:21:39 |
23 | 2022212503 | Jjjjj | 4 | 1463:01:37 | 400 | 349:33:13 | 350:33:53 | 367:05:40 | 391:48:51 |
24 | 2022212111 | 码码哈哈 | 4 | 1638:32:04 | 400 | 386:52:21 | 414:22:10 | 366:41:10 | 460:16:23 |
25 | 2022212666 | 李宇星 | 4 | 1878:08:28 | 400 | 460:35:23 | 462:05:34 | 468:16:21 | 482:11:10 |
26 | 2019211315 | hsc | 4 | 1928:56:56 | 400 | 458:28:32 | 489:33:48 | 489:50:16 | 490:44:20 |
27 | 2022212625 | 20222122625 | 4 | 1964:27:20 | 400 | 391:35:23 | 392:47:41 | 583:50:40 | 587:13:36 |
28 | 2022212010 | 蔡正舟 | 4 | 2017:28:32 | 400 | 27:19:07 | 990:16:35 | 969:36:41 | 28:36:09 |
29 | 2022212857 | zealot | 4 | 2041:25:33 | 400 | 555:33:54 | 489:41:34 | 490:57:05 | 502:33:00 |
30 | 2022212367 | wxt | 4 | 2053:28:45 | 400 | 487:15:36 | 489:04:26 | 513:09:14 | 562:19:29 |
31 | 2022212744 | aggylow | 4 | 2175:16:41 | 400 | 334:58:57 | 339:59:23 | 508:05:05 | 987:33:16 |
32 | 2022212247 | 马梓洋 | 4 | 3323:56:37 | 400 | 488:26:08 | 893:48:53 | 971:27:38 | 957:33:58 |
33 | 2022210177 | 牛梓帆 | 4 | 3575:46:02 | 400 | 815:36:51 | 816:29:39 | 947:14:10 | 993:45:22 |
34 | 2022211644 | apple | 4 | 3662:34:41 | 400 | 898:20:33 | 910:04:42 | 923:09:17 | 925:00:09 |
35 | 2022212458 | 谭超 | 4 | 3760:38:00 | 400 | 961:41:03 | 819:39:26 | 985:10:35 | 985:46:56 |
36 | 2022212414 | greed106 | 4 | 3848:39:03 | 400 | 962:06:30 | 962:07:35 | 962:11:08 | 962:13:50 |
37 | 2019211417 | 咸鱼 | 4 | 3859:12:41 | 400 | 940:16:38 | 940:22:23 | 988:23:41 | 988:29:59 |
38 | 2019211405 | 2019211405 | 4 | 3870:35:44 | 400 | 966:20:12 | 967:48:25 | 967:53:11 | 967:53:56 |
39 | 2022212379 | visir | 4 | 3881:56:56 | 400 | 943:05:47 | 973:36:12 | 973:03:08 | 974:31:49 |
40 | 2022212442 | 范兼玮 | 4 | 3956:11:31 | 400 | 970:19:18 | 990:09:28 | 988:11:06 | 993:51:39 |
41 | 2022211637 | 爱做梦的露西亚 | 4 | 3965:47:05 | 400 | 987:15:07 | 990:58:32 | 992:15:17 | 993:58:09 |
42 | 2021211124 | zzz | 4 | 3966:28:36 | 400 | 991:13:02 | 991:38:02 | 991:44:47 | 991:52:45 |
43 | 2021211127 | xinxin | 4 | 3972:57:08 | 400 | 992:43:09 | 992:56:21 | 993:06:20 | 993:11:18 |
44 | 2017211617 | 赵鹏飞 | 4 | 3977:00:53 | 400 | 994:08:47 | 994:16:38 | 994:17:25 | 994:18:03 |
45 | 2022212922 | sherry | 3 | 2580:57:16 | 300 | 587:00:55 | 995:19:30 | 995:36:51 | (+0) |
46 | 2022212434 | Healthy | 2 | 1991:59:44 | 200 | 995:54:27 | (+0) | 995:05:17 | |
47 | 2021211214 | 黃洪力 | 1 | 1003:29:13 | 100 | 995:49:13 |