即時通訊新的C和不能爲我的生活弄清楚我在這裏做錯了什麼。第一個scanf工作正常,變量在讀入時打印出來。第二個scanf似乎沒有正確讀取輸入。輸入格式爲「char int int」,即當我打印opb x和y out,opb =「」,x = 13238272,y = 0時,輸出格式爲b 4 4
。 什麼想法?.....注IVE切出代碼的問題C scanf()問題
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函數的'()'的返回值,因爲它是你就會知道,如果有一個格式錯誤的唯一方法。 – geekosaur 2011-03-23 06:04:17
你看起來是一個格式錯誤(因爲它沒有返回3),這是怎麼回事? – Milk 2011-03-23 06:13:07
@ user445559:我發生的一件事情是,'%c'將讀取下一個可用字符 - 即使它是空格或讀取上一行時留下的換行符。一般來說,以行的形式讀取輸入並使用'sscanf()'來解析它們會更安全。 – geekosaur 2011-03-23 06:15:30