[問題] 輸入英文字串,輸出時小寫會全部改大寫

看板C_and_CPP作者 (無良記者)時間13年前 (2013/01/16 23:09), 編輯推噓6(6027)
留言33則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) iostream 問題(Question): 其實這是求救文了...... 今天在想一個練習題,題目是: 「宣告一個字元陣列,並給以適當的初始值字串。使用迴圈將每個字元改為大寫字元」 我第一次寫的時候,仍然搞不清楚 new的動態陣列配置用法 因此一直遇到 heap corruption的結果 後來私信向一位板友請教後,總算搞懂了正確的觀念,結果現在陷入了窘境 因為我要輸入一串英文字串,並且配合輸入的長度 new出一個陣列 但要知道出入字串的長度的話,無論用 sizeof或 strlen,都需要先把字串放到陣列裡 可是我不能先固定陣列的大小,然後這問題就變成無窮迴圈了...... 請問如果只用 new的話,這問題有解嗎0.0? (我現在學到的程度,大概就到了解函式的基礎架構這樣0.0) (題目似乎沒有要求說一定要輸入字串再小寫改大寫 但我想知道如果要求輸入的話要怎麼做......) 餵入的資料(Input): 假設是 asdFGHjklQWerT 預期的正確結果(Expected Output): ASDFGHJKLQWERT 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/72H6Ycel 這是第一版,可以達成我要的要求,但只有前10個字元,而且會造成 heap corruption 補充說明(Supplement): -- 吾乃 不死之眾矢之的 無右之聯合之盾 武田軍最強騎兵團首席武將 不死鬼 馬場美濃守信房是也 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.233.53

01/16 23:14, , 1F
cin.getline(buffer,maxnumber,delim)
01/16 23:14, 1F

01/16 23:15, , 2F
你寫這樣'\n'變成最多當然只讀10個
01/16 23:15, 2F

01/16 23:16, , 3F
'\n' 為ascii 0x0a = 10
01/16 23:16, 3F

01/16 23:17, , 4F
http://ppt.cc/DYH0 可以來這邊查用法
01/16 23:17, 4F
那裡是我當初以為用動態陣列的話,cin.getline就不用填maxnumber...... 原來不一定要填的是delim 0.0

01/16 23:23, , 5F
1. 先問對方會有多長 然後最多就讀那麼長
01/16 23:23, 5F

01/16 23:23, , 6F
2. 固定buffer的大小 分段處理
01/16 23:23, 6F

01/16 23:24, , 7F
3. 用string/vector 不夠的時候自行增長/copy
01/16 23:24, 7F
1.我希望能讓測試者盡量自由...... 2.這我沒想到耶......感謝提供! 3.那超出我現在所學範圍了 囧,而且我希望盡量用該章節教的東西來寫題目0.0

01/16 23:40, , 8F
什麼態度... 愈超前愈好阿, 不要把學習限制在課堂範圍
01/16 23:40, 8F

01/16 23:41, , 9F
資訊領域學不完的
01/16 23:41, 9F
我是怕學太超前反而會混亂......連物件我都還沒學到0.0 還是說其實沒關係?

01/16 23:45, , 10F
其實3你自己做也可以 不一定要用別人寫好的string或vector
01/16 23:45, 10F

01/16 23:45, , 11F
我覺得 熟悉你現在的方法 跟學超出所學範圍是兩回事
01/16 23:45, 11F

01/16 23:45, , 12F
3的話依你目前程度應該可以算是很好的練習
01/16 23:45, 12F

01/16 23:46, , 13F
你可以先用動態陣列做完 再用string or vector做一次
01/16 23:46, 13F

01/16 23:48, , 14F
直接stl的string
01/16 23:48, 14F
我剛剛翻了正在看的參考書,vector是在STL的範圍裡,還在 template之後0.0 而我才剛學完怎麼建構基本函式而已,連函式指標都還不會...... 所以大家是建議我可以先直接去看STL那章嗎?因為我是自學的,沒有老師可以問 O_O

01/16 23:51, , 15F
如果要硬幹你可以先預設大小,如果超過就建個更大的
01/16 23:51, 15F

01/16 23:52, , 16F
例如原先的兩倍,接著把原先的複製過來,再繼續讀入
01/16 23:52, 16F
這也是一個方法......感謝!

01/17 00:06, , 17F
沒差吧,用了就對了,不會再去查就好
01/17 00:06, 17F

01/17 00:19, , 18F
奇怪,寫得比較好的書很前面就教 vector 怎麼用了,企圖讓
01/17 00:19, 18F

01/17 00:20, , 19F
閱讀者盡可能使用 vector 而不用 new,怎麼你還在 new 打轉
01/17 00:20, 19F
我是看《Visual V++ 2008教學手冊》這本自學的 這本書 new放第四章,vector放第十章0.0

01/17 00:27, , 20F
01/17 00:27, 20F

01/17 00:28, , 21F
讓使用者輸入字串,用動態配置的字元陣列儲存,空間不足
01/17 00:28, 21F

01/17 00:28, , 22F
會重新配置多五個的陣列。
01/17 00:28, 22F

01/17 00:38, , 23F
01/17 00:38, 23F

01/17 00:38, , 24F
將輸入字串轉大寫
01/17 00:38, 24F
昨天在信裡也一直受到你的照顧 m(_ _)m

01/17 00:50, , 25F
01/17 00:50, 25F
._.a

01/17 00:59, , 26F
我也沒修過課...
01/17 00:59, 26F

01/17 01:28, , 27F
locale很煩... http://ppt.cc/ZpWz
01/17 01:28, 27F

01/17 02:48, , 28F
很多東西還是要自己看啦 課程能講個template已經揪甘心了
01/17 02:48, 28F

01/17 02:49, , 29F
要不然大概就 animal cat dog speak() 幾下就結束了
01/17 02:49, 29F

01/17 02:49, , 30F
更不用講algorithm iterator raii boost和c++11的東西了
01/17 02:49, 30F

01/17 03:02, , 31F
我剛好以前在版上問過 #1GFD7D6H
01/17 03:02, 31F
嗯......了解了 O_O ※ 編輯: o07608 來自: 114.39.233.53 (01/17 08:55)

01/19 02:49, , 32F
用vector
01/19 02:49, 32F

01/19 02:50, , 33F
不對 你連vector都不需要 用string就好了...
01/19 02:50, 33F
文章代碼(AID): #1GziA_6Z (C_and_CPP)