Im new to C and cant for the life of me work out what im doing wrong here. The first scanf works fine, variables are printed out as they are read in. The second scanf doesn't seem to be reading the input correctly. Input is of the format "char int int" i.e. b 4 4
when i print opb x and y out, opb = " ", x = 13238272 , y=0.
Any Ideas?.....note ive cut out code below the problem
int main(void)
{
/*initialize variables*/
int width, height;
char op;
/*grid input*/
scanf("%c %d %d", &op, &width, &height);
/*check conditions*/
if (op != 'g' || width>100 || height>100 || width*height<10 || width<1 || height<1) {
printf("grid-error\n");
return 0;
}
/*initialize grid elements*/
int grid[width][height];
char printGrid[width][height];
/*create grid elements*/
int i, j;
for (i=0; i<height; i++) {
for (j=0; j<width; j++) {
grid[j][i] = 0;
printGrid[j][i] = '*';
}
}
/*print successful creation*/
printf("%c %d %d \n", op, width, height);
int k;
for (k = 0; k<10; k++) {
/*initialize variables*/
int x, y;
char opb;
/*mine input*/
scanf("%c %d %d", &opb, &x, &y);
/*check conditions*/
if (opb != 'b' || x<0 || y<0 || x>(width-1) || y>(height-1) || grid[x][y] == 9) {
printf("mine-error\n");
return 0;
}
scanf()
, because it's the only way you'll know if there's a format error. – geekosaur%c
will read the next available character — even if it's a space or the newline left over from reading the previous line. In general it's safer to read input as lines and usesscanf()
to parse them. – geekosaur