[問題] 去除多餘字元和轉換大小寫(已解決)

看板C_and_CPP (C/C++)作者 (Haruhi)時間15年前 (2011/01/07 01:08), 編輯推噓4(4013)
留言17則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...) Dev_C++ 問題(Question): Q1:去除多餘的空白 Q2:將每個句子首字母大寫 餵入的資料(Input): 自檔案讀入文章,內容如下:(不斷行) users can ubiquitously access the data via many emerging mobilo appliances, such as portable notebooks, personal digital assistants (PDAs), and WAP-enabled cellalar phones. recent technelogy advances in mobile networking have ushered in a new era of persenal conmunication. 預期的正確結果(Expected Output): Users can ubiquitously access the data via many emerging mobilo appliances, such as portable notebooks, personal digital assistants (PDAs), and WAP-enabled cellalar phones. Recent technelogy advances in mobile networking have ushered in a new era of persenal conmunication. 錯誤結果(Wrong Output): Q1:出現停止運作,但是一兩次會出現正常結果 Q2:一樣會有停止運作 程式碼(Code): (請善用置底文標色功能) Q1:http://codepad.org/utde7LiZh Q2:http://codepad.org/Nez9uFmh8 補充說明(Supplement): 小妹我在Q1部分只寫了將三個空白取代成一個,想說如果成功了就可以陸續加入四個空白 取代成一個之類,打算用寫好的方式@@" 在Q2部分,我先用exactMatch函數尋找". ",將之後的字轉成大寫,為測試有沒有成功 在印出結果的buf前有令他顯示,有看到成功... 然後兩個程式碼都會出現停止運作...是不是在記憶體配置上有錯誤呢@@? 請大家多多指教>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.152.90

01/07 01:21, , 1F
用fscanf一段一段吃進來再自己填空白不是比較輕鬆嗎?
01/07 01:21, 1F

01/07 01:22, , 2F
其實照題目的敘述來看, 只需要一直讀字串進來, 印出來
01/07 01:22, 2F

01/07 01:23, , 3F
的時候自己加, 判斷有沒有句點下次首字大寫就好了
01/07 01:23, 3F

01/07 01:35, , 4F
推樓上l大, 一個字一個字讀, 再一個字一個字印:D
01/07 01:35, 4F

01/07 01:37, , 5F
目前的想法是, 一個字一個字讀, 並總是記錄前一個字,
01/07 01:37, 5F

01/07 01:37, , 6F
如果prev==' '且curr==' ', 就skip curr的空白並吃下一
01/07 01:37, 6F

01/07 01:40, , 7F
個字; 句首大寫就搭配個flag記錄字母是否為'.'之後的第
01/07 01:40, 7F

01/07 01:40, , 8F
一個字母. 不過遇到縮寫點之類的會破功XD
01/07 01:40, 8F

01/07 01:43, , 9F
除非保證句點後一定是空白,不然縮寫點跟句點很難分別吧
01/07 01:43, 9F

01/07 01:47, , 10F
就是覺得這有點難搞Orz 再說縮寫點後也可以空白OTZ
01/07 01:47, 10F

01/07 01:48, , 11F
疑?? 補充那邊是說, 句點後一定是兩個空白嗎?_?
01/07 01:48, 11F
※ 編輯: haruhi6 來自: 111.252.152.90 (01/07 01:53)

01/07 02:01, , 12F
放下牛角,立地寫 code... http://codepad.org/h8pL2r8Yu
01/07 02:01, 12F

01/07 02:08, , 13F
恩恩~剛剛查了一下fscanf的用法...繼續嘗試中@@
01/07 02:08, 13F

01/07 02:08, , 14F
我剛剛打錯補充那裏了>"<只需要將多個空白補成一個就好~
01/07 02:08, 14F

01/07 02:12, , 15F
對喔, 都忘了fscanf用%s讀也可以濾掉多個連續空白XD
01/07 02:12, 15F

01/07 02:15, , 16F
所以 cout 後面都有再多一個空白 << buffer << " ";
01/07 02:15, 16F

01/07 02:39, , 17F
謝謝t大提供的程式碼,小妹會繼續研究> <
01/07 02:39, 17F
※ 編輯: haruhi6 來自: 111.252.152.88 (01/07 18:08)
文章代碼(AID): #1D9VSdPu (C_and_CPP)
文章代碼(AID): #1D9VSdPu (C_and_CPP)