#17026: C的


freedom501999@gmail.com (帥氣魔方生)

School : No School
ID : 88611
IP address : [39.8.203.54]
Last Login :
2019-05-30 22:56:25
c631. 記憶力試驗 | From: [27.52.9.157] | Post Date : 2019-03-01 13:53

可以先去看 e080,我有解說 rewind ()

這題除了 rewind () ,還需要其他檔案輸出入會用到的函式 

fseek () 這是用來定位題目要求的段落,也可以跳過測資第二列

fread () 這是用來將輸入流存到字串

首先讀取第一行 N,然後用 fseek ( stdin , N+2 , SEEK_CUR )

跳過第二列 ( +2 是跳過測資的兩個 ' \n ' )

然後先用陣列儲存要求段落 while ( scanf() ! = EOF )

從 第一筆要求開始,依序進行 : 

1.  rewind ( stdin ) ,回到開頭

2. scanf ( " %*d%*c " ),跳過第一列的數字跟換行

3. fseek ( stdin , L - 1 , SEEK_CUR),跑到指定開頭

( L 是開頭位置,其位址是在 L - 1 )

4. 算出長度 R - L + 1 = len 

5. 用 fread () 讀字串到緩衝陣列,輸出陣列

5.1 若 len 大於 緩衝陣列 長度,要分多次讀取跟輸出

5.2 用 memset () 清空緩衝陣列,確保正確

5.3 printf () 要用 % . * s 輸出緩衝字串, . * 為指定長度,* = len

 
ZeroJudge Forum