(c语言)这段代码为什么运行时输入首个字符出问题?

/*分配二维数组*/ 
	char **a = (char **)malloc(sizeof(char)*x);						//分配x行 
	for(i = 0;i < x;i++){
		a[i] = (char *)malloc(sizeof(char)*y);						//每行y个 
	}
	
	/*二维数组赋值*/ 
	for(i = 0;i < x;i++){
		for(j = 0;j < y;j++){
			printf("输入\n");
			scanf("%c ",&a[i][j]);
			printf("%c\n",a[i][j]);
			printf("#\n");
		}
		printf("=");
	}

 

动态分配不对

char **a = (char**)malloc(sizeof(char)*x)

改为

char **a = (char**)malloc(sizeof(char*)*x)

以上

你首个字符输入什么了?  你可以单步执行一下你的程序吗?