2014-04-10 249 views
-2

Visual C++不斷中止我的循環。字符串l1是80個字符長。出於某種原因,代碼通過主循環的一次迭代,然後出現一個窗口,顯示「調試錯誤... R6010 -abort()已被調用」,終止程序。
循環問題

for(int i=1;i<80;i++) 
{ 
    SetConsoleTextAttribute(hConsole, green); 

    for(int j=0;j<i;j++) 
    { 
     cout<<l1.at(j); 
    } 

    SetConsoleTextAttribute(hConsole,norm); 

    for(int k=i;k<80;k++) 
    { 
     cout<<l1.at(k); 
    } 

    Sleep(100); 
    system("CLS"); 
} 
+1

請發佈錯誤消息。 –

+2

循環的一個迭代? – mangusta

+0

define'踢鬥' – user657267

回答

0

試試這個

int len = strlen(l1) ; 
for(int i=1;i<len;i++) 
{ 
    SetConsoleTextAttribute(hConsole, green); 

    for(int j=0;j<i;j++) 
    { 
     cout<<l1.at(j); 
    } 

    SetConsoleTextAttribute(hConsole,norm); 

    for(int k=i;k<len;k++) 
    { 
     cout<<l1.at(k); 
    } 

    Sleep(100); 
    system("CLS"); 
} 
0

這是因爲你超出你傳遞字符串的邊界。爲什麼你將80的值硬編碼到你的代碼中?

+0

你是如何得出這個結論的? –

+0

好吧,如果你嘗試從已定義的字符串的範圍外返回一個字符(即一個字符串的長度爲15個字符,並且你試圖返回位置爲50的字符),那麼它會拋出一個例外。即如下面的Himanshu編碼,你只應該到字符串的末尾,不要再進一步,永遠。 –