У меня есть следующий код, который я пытаюсь запустить.scanf не читает второй аргумент
Я хочу, чтобы функция scanf
принять в трех различных входах, с двумя первыми целыми числами между 0
и 30
и третьей строкой, начинающейся с @
.
Программа компилируется отлично, но когда я пытаюсь ввести координаты и соответствующий символ @
, я получаю 0
в координате y
.
Кто-нибудь знает, почему это происходит или что я могу сделать, чтобы исправить это? Ниже приведен код
#include <stdio.h>
int main(){
int grid[30][30];
int i, j;
for(i=0; i<30;i++){
for(j=0; j<30;j++){
grid[i][j]='.';
}
}
int x_coord;
int y_coord;
char type[2];
scanf("%d %d %s",&x_coord,&y_coord,type);
/*added extra whitespace*/
printf("%i %i %s",x_coord,y_coord,type);
printf("\n");
grid[x_coord][y_coord]=type[1];
//end outer loop
for(i=0; i<30;i++){
for(j=0; j<30;j++){
printf("%c",grid[i][j]);
}
printf("\n");
}
return(0);
}//end main
больше, необходимости 'символ типа [2];' – BLUEPIXY
Каков ваш вход? И все ли на одной линии? Я также предлагаю вам предоставить [mcve] - это может быть очень полезно, особенно с этими трудными для отслеживания ошибок. –
при вызове какого-либо семейства функций 'scanf()' всегда проверяйте возвращаемое значение (а не значения параметра), чтобы убедиться, что операция прошла успешно. В опубликованном коде возвращаемое значение должно быть 3, любое другое значение указывает на ошибку. При использовании спецификатора формата «% s», ALWAYS включает модификатор максимальной длины (то есть один меньше длины входного буфера) – user3629249