【发布时间】:2019-06-10 09:44:37
【问题描述】:
int main(int argc, char *argv[]){
//introduction
printf("WELCOME TO PENTAGO!!!\n\n");
int size = atoi(argv[2]);
game* g = new_game(size, CELLS);
printf("PENTAGO Board: (. : Empty, * : Black, 0 : White)\n");
board_show(g->b);
while(1){
if(g->next == WHITE_NEXT){
printf("White: \n");
}
if(g->next == BLACK_NEXT){
printf("Black: \n");
}
//move
//place marble;
char move;
printf("Please enter a move: ");
scanf(" %c", &move);
char a1 = move; move++; char a2 = move;
pos p = make_pos(charToInt(a1),charToInt(a2));
place_marble(g,p);
board_show(g->b);
//twist quadrant;
printf("\nTo twist please enter quadrant q (1 : NW, 2 : NE,3 : SW,4 : SE) and direction d (c : clockwise, w: counterclockwise) in the given format: qd \nFor example 2w indicates a counterclockwise twist in the north east quadrant.");
char entry;
printf("Twist Entry: ");
scanf(" %c", &entry);
char q1 = entry ; entry++ ; char d1 = entry;
twist_quadrant(g,charToQuad(q1), charToDir(d1));
board_show(g->b);
}
printf("\n");
}
我在 c 中的 main 函数中遇到了一个奇怪的问题,即 scanf 函数。如您所见,我在 while 循环中包含了两个 scanf 函数。通过循环的每次迭代,只有第一个 scanf 函数会运行,而第二个函数会被完全跳过。可能是什么问题?任何帮助将不胜感激。
【问题讨论】:
-
在第二个
scanf()中,您期望类似 "2w" 但只接受一个字符 (entry), -
char q1 = entry ; entry++ ; char d1 = entry;这不是字符串在 C 中的工作方式。 -
您没有检查
scanf调用的任何返回值。