2012-03-30 51 views
1

字符串輸入超過1000個字符時,代碼掛起
P & Q中的所有字符均爲小寫英文字母。字符串輸入超過1000個字符時執行掛起

#include<iostream> 
    #include<vector> 
    using namespace std; 

    int main(){ 

    // 1st example 
    string p,q; 
    cin >> p >> q; 

    // 2nd example 
    char p[1500],q[1500]; 
    scanf("%s",p); 
    cin >> q ; 

    return 0; 
    } 

對於少於1000個字符的字符串都可以正常運行。
這兩個替代示例都會打破大於1000個字符的字符串。
我只是需要一種方法來最大1500個chracters

編輯輸入字符串:原來的XCode有過錯。它在服務器上正常工作

+2

我很困惑你的程序片段。這兩個例子可供選擇嗎?哪一個工作,哪一個休息?或者他們是否被連續執行?那麼它會在第一個或第二個例子中斷裂嗎?請發佈**完整的**程序,以顯示您所看到的錯誤。請閱讀http://sscce.org找出原因。 – 2012-03-30 19:44:15

+0

你如何提供輸入?也許終端掛起而不是程序? – hillel 2012-03-30 20:08:02

+0

什麼編譯器和操作系統? – egrunin 2012-03-30 20:09:21

回答

-2

如果您通過Unicode輸入到這,緩衝區將溢出&您將崩潰。

編輯補充:

如果你是幸運的。請注意,小寫英文Unicode字符是,每個字節仍有兩個字節。如果你的輸入來自一個文件,你不能通過查看它是否是Unicode,你需要在十六進制編輯器中打開它以確保它。

要測試這個,使緩衝區大小爲輸入的兩倍(p[2001], q[2001])。

但是使用靜態緩衝區是錯誤的方法來做到這一點,string是正確的方法:上限是像2^32個字符。

+0

至少,希望你會崩潰。 – 2012-03-30 19:25:44

+0

這是如何解決OP的問題? – jwodder 2012-03-30 19:26:54

+0

P&Q中的所有字符均爲小寫英文字母。 – user1301541 2012-03-30 19:27:00

相關問題