*因为这里有多个scanf函数,当第一个scanf函数读
*取输入的值时,它会将\n也读取了进去,而这第一个scanf
*函数并不会将\n也读取进去,所以\n会一直留在缓冲区中
*而下一个scanf函数在读取属于%c内容时,会连带的将 \n 也一起接收,
*所以这会造成程序错误
*其解决办法是:
*在%c之前加上一个空格从而将缓冲区中的\n吸收掉
注意:
//只有读取%c时才会有上述的要求,如果是%d则没有,
//由《现代方法》里的scanf读取原理可以知道
代码示例:
int row = 0,line = 0;
scanf("%d %d\n",&row,&line); //输入二维数组的行数和列数
int arr[10][10] = {0};
int i = 0;
for (i = 0;i < row;i++)
{
int j = 0;
for (j = 0;j < line;j++)
{
scanf("%d ",&arr[i][j]); //输入二维数组中的数据
}
}
int perform = 0;
scanf("%d\n",&perform); //输入执行次数
/*因为这里有多个scanf函数,当第一个scanf函数读
*取输入的值时,它会将\n也读取了进去,而这第一个scanf
*函数并不会将\n也读取进去,所以\n会一直留在缓冲区中
*而下一个scanf函数在读取属于%c内容时,会连带的将\n也一起
*接收,
*所以这会造成程序错误
*其解决办法是:
*在%c之前加上一个空格从而将缓冲区中的\n吸收掉
*/
char type = '0';
int perform1 = 0,perform2 = 0;
int y = 0;
for (y = 0;y < perform;y++)
{ //只有读取%c时才会有上述的要求,如果是%d则没有,
//由《现代方法》里的scanf读取原理可以知道
scanf(" %c %d %d\n",&type,&perform1,&perform2);//输入字符与行或列
//%c前面有一空格用来吸收多余的\n