2013-10-13 51 views
0

由於某些原因,我無法理解,當我在CMD中執行它時,此程序保持循環。程序保持循環

#include <stdio.h> 
int main() { 
    char array [] = {'b','f','r','o','a','u','v','t','o','\0'}; 
    int grootteArray = sizeof(array); 
    int grootteChar = sizeof(char);    
    int lengteArray = grootteArray/grootteChar; 
    int i; 
    for (i = 0; i < lengteArray + 1; i + 2) { 
     printf("%c", array[i]); 
    } 
    return 0; 
} 
+0

除了所有這些問題的答案,要小心,因爲的sizeof(陣列)將永遠是4.要想從文件string.h字符串使用strlen()的長度。 –

+2

@ Sebastian-LaurenţiuPlesciuc這是不正確.sizeof(數組)== 10 http://ideone.com/fork/agvGKv – this

+0

@ Sebastian-LaurenţiuPlesciuc,你真的應該閱讀關於數組和指針,它們在C中不一樣 –

回答

8

你的計數器變量保持每次循環後的同一。您需要通過分配新的價值,以增加它:

for (i=0; i<lengteArray+1; i=i+2) //change to this 
+0

非常感謝:) – BURNS

+0

@BURNS歡迎您 – Kunal

7

因爲i永不改變。您應該分配給i + 2i

for (i=0; i<lengteArray+1; i = i + 2) { 
          ↑ 

你寫對的i的價值沒有影響的方式,它只是計算i + 2,所以沒有任何與此值。

因爲i設置爲0而且它總是0 ..所以一旦i < legteArray + 1,它會保持那樣。

+0

i + 2不算? – BURNS

+0

@BURNS: - 不,這不是for循環的syntxx! –

+0

* count *表示什麼意思? – Maroun

2

i在你的循環中沒有修改。此外,i < lengteArray + 1將導致您打印垃圾值和未定義的行爲。

for (i = 0; i < lengteArray; i++){ 
    printf("%c", array[i]); 
}  

如果你有興趣在每次迭代由2遞增i那麼你可以使用i += 2

for (i = 0; i < lengteArray; i += 2){ 
    printf("%c", array[i]); 
}  
+0

這是爲什麼downvoted? – ComFreek

+0

@ComFreek;其實有些人真的很喜歡我。認真! – haccks

+6

@ComFreek原來的答案是不正確的。 – Kunal

2

i值從未改變。

試試這個: -

for (i=0; i<lengteArray+1; i = i+2) { 
+1

非常感謝:) – BURNS

+0

@BURNS: - 不客氣! –