[問題] 輸入字串長度任意

看板C_and_CPP (C/C++)作者 (胖逼=口=)時間14年前 (2011/09/28 01:11), 編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vc2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 程式要我輸入一個字串 可以是ABC 也可以是ABCDE 而我定義字串為char stringX[100]; 不過這種宣告方式等於把輸入字串的長度寫死 我想請問的是程式該如何撰寫 才能讓使用者任意地輸入任何長度的字串而不受限制 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) char stringX[100]; printf("請輸入stringX值:"); scanf("%s",stringX); 我的宣告方式是如此 程式中抓取字串資料的方式則是使用 cout << stringX[?]; 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.76.9

09/28 01:16, , 1F
你也可以預期使用者不可能輸入超過多少字元, 就用成那麼
09/28 01:16, 1F

09/28 01:16, , 2F
大.
09/28 01:16, 2F

09/28 01:17, , 3F
另外, 輸入的介面好像也有差!? DOS視窗輸入的字元有限制
09/28 01:17, 3F

09/28 01:39, , 4F
用 std::string
09/28 01:39, 4F

09/28 03:09, , 5F
要看你寫的是C還是C++,C++有STLstring,C只能長度寫死。
09/28 03:09, 5F
C++ 後來發現我的真正問題是 使用者隨意輸入一個字串 然後將該字串放入陣列裡 陣列空間不浪費 string s; //給予使用者輸入字串用 char* stringX; //將字串放入陣列 printf("請輸入stringX值:"); cin >> s; stringX = new char[s.length()]; //配置s.length() bytes 記憶體 for(int i = 1; i<=s.length();i++){ stringX[i-1] = s.substr(i-1,1); <-這行error } 我的想法是在for迴圈裡面將s一個個塞入stringX裡面 但是編譯器告訴我char*和string不可互換= = 請問有解嗎? ※ 編輯: fatb 來自: 111.252.76.9 (09/28 03:59) ※ 編輯: fatb 來自: 111.252.76.9 (09/28 04:00) 痾 想不到 strcpy(stringX, s.c_str()); 就解決了 連for迴圈都不用了 問題應該順利解決了 謝謝大家 ※ 編輯: fatb 來自: 111.252.76.9 (09/28 04:14)

09/28 09:23, , 6F
請直接用string就好.不要把c++當成c來用
09/28 09:23, 6F

09/28 09:42, , 7F
%as
09/28 09:42, 7F
看了樓樓上的回應跑去試了一下 原來程式碼可以修改成 使用s[?]來取代stringX[?] 我還多宣告一個矩陣真是脫褲子放屁@.@ ※ 編輯: fatb 來自: 111.252.76.9 (09/28 15:54)
文章代碼(AID): #1EWWEq-j (C_and_CPP)
文章代碼(AID): #1EWWEq-j (C_and_CPP)