這主要是出於好奇,爲什麼會發生這種情況,因爲它對我而言並不重要。如果我輸入了一個無效的數字,它會正確地轉到重複標籤並要求我再次輸入一個數字,但是如果我輸入了像'f'這樣的字符,它將無休止地循環而不停止。爲什麼是這樣?當在C中輸入字符時,代碼循環
這裏的數組和所有變量都是int類型的。
repeat:
printf("Enter number of available space, you are %c: ", userXO);
scanf("%d", user);
switch (*user)
{
case 1: if (spaces[0][0] == 49){ spaces[0][0] = userXO;}else goto repeat; break;
case 2: if (spaces[0][1] == 50){ spaces[0][1] = userXO;}else goto repeat; break;
case 3: if (spaces[0][2] == 51){ spaces[0][2] = userXO;}else goto repeat; break;
case 4: if (spaces[1][0] == 52){ spaces[1][0] = userXO;}else goto repeat; break;
case 5: if (spaces[1][1] == 53){ spaces[1][1] = userXO;}else goto repeat; break;
case 6: if (spaces[1][2] == 54){ spaces[1][2] = userXO;}else goto repeat; break;
case 7: if (spaces[2][0] == 55){ spaces[2][0] = userXO;}else goto repeat; break;
case 8: if (spaces[2][1] == 56){ spaces[2][1] = userXO;}else goto repeat; break;
case 9: if (spaces[2][2] == 57){ spaces[2][2] = userXO;}else goto repeat; break;
default: goto repeat; break;
}
無論發生什麼縮進?該代碼幾乎不可讀。 – sapi 2013-04-21 01:14:01
你爲什麼要使用[goto](http://stackoverflow.com/questions/3517726/what-is-wrong-with-using-goto)?爲什麼?! WHYYYY? – timss 2013-04-21 01:15:18
@sapi它是縮進的。如果你正在談論if語句,它不是很複雜,我沒有縮進,所以它可以放在屏幕上。 – 0x41414141 2013-04-21 01:16:07