我只是做一個程序來猜測數組中的一些隨機對,如果猜對了,刪除這一對。scanf混淆類型錯誤
我遇到了一個問題,我只能輸入整數。每次嘗試鍵入*時,程序都會崩潰。我使用如下條件:
if (scanf("%d",&temp)==1)
嘗試解決我的問題,但它確實沒有用。
這裏是我的代碼,並請給我一些幫助:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int r[4]; //random
int s[8]; //store
char c[8]; //cover
int g[8]; //guess
int i;
int round=0;
int left = 4;
int point = 0;
int clear_index[2];
int temp;
// generate random number
for (i=0;i<4;i++)
{
r[i] = (rand()%10)+1;
s[i] = r[i];
s[i+4] = r[i];
}
// show the default number
printf("[show] ");
for (i=0;i<8;i++)
{
printf("%d ",s[i]);
c[i] = '*';
}
printf("\n");
while(left>0)
{
// print left
printf("[cover] ");
for (i=0;i<8;i++)
printf("%c ",c[i]);
printf("\n");
//guess
printf("[guess] ");
for(i=0;i<8;i++)
{
if (scanf("%d",&temp)==1)
g[i] = temp;
if (g[i] == s[i])
{
printf("v\n");
clear_index[point] = i;
point++;
}
}
if (point == 2)
{
for (i=0;i<2;i++)
c[clear_index[i]]=' ';
left-=1;
point = 0;
}
round+=1;
//left-=1;
}
printf("you won in %d round",round);
}
這個'scanf(「%d」,&temp)'是爲了得到你輸入的整數。你想輸入數字還是字符? –
我嘗試過濾出非整數。 – KennyYang
以「for(i = 0; i <8; i ++)」開頭的循環可以將8個值設置爲「int clear_index [2];',但是clean_index只能包含2個值。 I.E.在調用未定義行爲的數組末尾寫入。這可能導致seg故障事件。 – user3629249