60 likes | 179 Views
句型王. 實習 7. 讓使用者可輸入一個句子,並且有以下功能: 搜尋字串並顯示該字串出現的次數 刪除特定字串 ( 整句裡有的都要刪掉 ) 取代特定字串 ( 整句裡有的都要取代 ) 輸入另外一個句子並將兩句合併 以上功能都要能重複進行,並且以選單的方式讓使用者選擇 ( 需包含離開的選項 ) ,每個功能請自行設計以”函式”完成。. 參考輸入 ( 該有的功能要有,其他隨意 ): 請輸入文字: To be is not to be(enter) ( 選擇搜尋功能 ) : to 搜尋到: 1 個相同單字 ( 大小寫有差 ) ( 選擇刪除功能 ) : be
E N D
句型王 實習7
讓使用者可輸入一個句子,並且有以下功能: • 搜尋字串並顯示該字串出現的次數 • 刪除特定字串(整句裡有的都要刪掉) • 取代特定字串(整句裡有的都要取代) • 輸入另外一個句子並將兩句合併 • 以上功能都要能重複進行,並且以選單的方式讓使用者選擇(需包含離開的選項),每個功能請自行設計以”函式”完成。
參考輸入(該有的功能要有,其他隨意): • 請輸入文字:To be is not to be(enter) • (選擇搜尋功能):to • 搜尋到:1個相同單字 (大小寫有差) • (選擇刪除功能):be • 目前句子: To is not to (中間都只隔一個空白,而且整句裡面有be的都要刪) • (選擇替代功能):not • 請輸入替代字串:jerry • 目前句子:To is jerry to (每個都只隔一個空白) • (選擇合併句子):go to hell • 目前句子: To is jerry to go to hell • (選擇離開程式):Bye-bye~(隨便高興印什麼)
助教小語 • 如何讀一整行的句子並且把他放到一個字串(字元陣列)裡面? • fgets(string, 256, stdin) • fgets是一個”超”好用的讀取函式,他可以把螢幕/檔案 上隨意輸入的東西全部存到一個string(自己設的字串變數)裡面,第一個參數是你要存的陣列,第二個參數是每次讀入大小(通常會設跟陣列大小一樣,我習慣設256),第三個參數是file point,之後開讀檔的時候會教,簡單講就是連接到檔案開頭的位置指標,而在這裡用stdin是stand input的縮寫,會把標準輸入(通常是螢幕)當作來源。 • 一般很常見到這種寫法 • while( fgets( line , 256, stdin ) != NULL ){ 做其他事…. • } • 這種寫法會每次讀一行進來,再以字串的方式去處理,讀到沒有為止,如果是螢幕輸入則需設定離開的選項讓這個迴圈停止(螢幕可以一直輸入嘛,不像檔案有結尾),可以用下一頁那一堆函式來處理字串。 • 如何使用fgets,請參考http://www.cplusplus.com/ref/
助教小語 • 所有函式參考網頁http://www.cplusplus.com/ref/ • 如何比較兩字串有相同? • strstr()、strcmp() • 如何在字串後面接上新的字串? • strcat() • 如何複製字串? • strcpy() • 如何得知字串長度? • strlen() • 使用以上幾個函式就可以寫完本次實習。 • PS: 很難歐….雖然看起來很簡單…
助教小語 • 如何重複讀取?請參照實習6 • 如何連續判斷相同的字串? 想想看為什麼可以像下面這樣用八…觀念不好懂 • char input[20]; • char *ptr; • int count=0; • ptr = input; • while( (ptr = strstr( ptr , "to" )) ) { • count++; • ptr = ptr+1; • }