可以先去看 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