第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

scanf正則表達式-C

scanf正則表達式-C

楊__羊羊 2019-12-06 09:59:25
在編寫以下序列之前,我需要讀取一個字符串:\ nx \ n:(.....)\nx\n\ n是換行符,并且(.....)可以是任何可能包含其他\ n字符的字符。據我所知,scanf允許使用正則表達式,但是直到此模式,我才能使其讀取字符串。您能為我提供scanf格式字符串嗎?我正在嘗試類似的東西:char input[50000];scanf(" %[^(\nx\n)]", input);但這不起作用。
查看完整描述

2 回答

?
阿波羅的戰(zhàn)車

TA貢獻1862條經驗 獲得超6個贊

scanf 據我所知允許正則表達式

不幸的是,它不允許使用正則表達式:語法誤導性很強,但是在實現中甚至沒有與regex相似的東西scanf。所有這些都支持正則表達式的字符類,因此%[<something>]將其隱式視為[<something>]*。這就是為什么您將scanfTranslation 調用轉換為讀取由以外的字符組成的字符串的原因'(', ')', 'x', and '\n'。

為了解決您眼前的問題,您可以設置一個循環(huán),逐個讀取輸入的字符。每次獲得時'\n',請檢查

  • 到目前為止,您輸入的內容中至少包含三個字符,

  • 緊接其前的字符'\n''x',并且

  • 那之前的角色'x'是另一個'\n'

如果以上所有條件均成立,則您已到達預期輸入序列的末尾;否則,您的循環(huán)應繼續(xù)。


查看完整回答
反對 回復 2019-12-06
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

scanf 支持正則表達式。它對字符類的支持有限,但這完全不是一回事。

請勿使用scanf,fscanfsscanf,因為:

  1. 數字溢出會觸發(fā)未定義的行為。僅由于有人鍵入太多數字,才允許C運行時使程序崩潰

  2. 某些格式說明符(尤其是%s)是不安全的,與gets不安全的方式完全相同,即它們會欣喜地寫入所提供緩沖區(qū)的末尾,并使程序崩潰。

  3. 它們使得很難可靠地處理格式錯誤的輸入。

在這種情況下,您不需要正則表達式;一次讀取一行,getline并在行讀取僅為“ x”時停止。但是,標準正則表達式庫例程(不是ISO C,而是POSIX)稱為regcompregexec


查看完整回答
反對 回復 2019-12-06
  • 2 回答
  • 0 關注
  • 930 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號