iT邦幫忙

0

C語言 讀取一個檔案中某一行的第一個字串by fscanf

fscanf(fin,"%s %*[^\n]",&buffer2);

我查到的作法是這樣,但是在"%*[^\n]"我看不懂

是正規表示式嘛? 程式跑出來是對的!

%代表長度? 那後面怎麼沒參數
[^\n]
^是代表比對輸入列的啟始位置
所以是比對起始位置是'\n'換行字元的意思嘛?

我以為%後面街的東西 在後面你都要給它參數
沒看過長這樣的

有大大可以解釋一下嘛?

1 個回答

3
jerry00218
iT邦研究生 1 級 ‧ 2016-06-29 23:04:52
最佳解答

%代表長度? 那後面怎麼沒參數 [^\n]

%* 代表要忽略的項目,而 [^\n] 代要讀取到換行要停止,所以依照你的程式「fscanf(fin,"%s %*[^\n]",&buffer2);」。會將讀取到空白之前的第一個字串放入 buffer2 ,而空白後面到換行的資料,都不予理會。

% * 代表忽略的項目,這樣的話通常只有用讀檔案字串嘛?
[^\n] 這個是正規表示式嘛? 所以C有支援這種集合的寫法就對了?

jerry00218 iT邦研究生 1 級 ‧ 2016-06-30 00:15:26 檢舉

是的,只讀第一段字串,這應該不算是正規表達式,僅是格式轉換運算子。
像使用 printf 時使用到的 %d %x %s 這種。

我要發表回答

立即登入回答