Я просто создаю программу, чтобы угадать некоторые случайные пары в массиве, если угадать, удалите эту пару.scanf confusion with type error
Я столкнулся с проблемой, из-за которой я могу ввести только целое число. Каждый раз, когда я пытался ввести тип *, программа выйдет из строя. Я использую такое состояние, как:
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 значения. И.Е. запись за пределами массива, который вызывает неопределенное поведение. Это может привести к событию сбоя seg. – user3629249