[爆卦]c輸入字串長度是什麼?優點缺點精華區懶人包

為什麼這篇c輸入字串長度鄉民發文收入到精華區:因為在c輸入字串長度這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者fatb (胖逼=口=)看板C_and_CPP標題[問題] 輸入字串長度任意時間Wed Sep ...


開發平台(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
ericinttu:你也可以預期使用者不可能輸入超過多少字元, 就用成那麼 09/28 01:16
ericinttu:大. 09/28 01:16
ericinttu:另外, 輸入的介面好像也有差!? DOS視窗輸入的字元有限制 09/28 01:17
littleshan:用 std::string 09/28 01:39
johnhmj:要看你寫的是C還是C++,C++有STLstring,C只能長度寫死。 09/28 03:09

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)
angleevil:請直接用string就好.不要把c++當成c來用 09/28 09:23
kasase:%as 09/28 09:42

看了樓樓上的回應跑去試了一下

原來程式碼可以修改成

使用s[?]來取代stringX[?]

我還多宣告一個矩陣真是脫褲子放屁@.@
※ 編輯: fatb 來自: 111.252.76.9 (09/28 15:54)

你可能也想看看

搜尋相關網站