#include<stdio.h>
#include<stdlib.h>
#define MSIZE 10
int main()
{
int Size, gen, i, j;
printf("Enter number of generations\t");
scanf("%d", &gen);
printf("\nEnter size of the matrix (max size is %d and min is 2)\t", MSIZE);
scanf("%d", &Size);
if (Size > MSIZE) {
printf("\nSize should not be more than %d", MSIZE);
return 1;
}
if (Size < 2) {
printf("\nSize should not be less than 2");
return 1;
}
char **m = (char**) calloc(Size, sizeof(char*));
for (i=0; i<Size; i++)
{
m[i] = (char*) calloc(Size, sizeof(char));
}
printf("Enter matrix of first generation\n");
for (i=0; i<Size; i++) {
for (j=0; j<Size; j++) {
scanf("%c", &m[i][j]);
/*to make sure*/
printf("%c ", m[i][j]);
}
printf("\n\n");
}
}
这是我的计划的第一部分,应该是康威的死亡游戏。我认为,问题出在输入函数中,因为如果我自己在程序中填充它(而不是通过输入),它将被正确打印。
答案 0 :(得分:2)
我认为,问题在于输入功能,因为如果我填写它 在我自己的程序内(不是通过输入),它将被正确打印。
scanf()
中的"%c"
前需要一个空格来使用上一个换行符/输入:
for (i=0; i<Size; i++) {
for (j=0; j<Size; j++) {
scanf(" %c", &m[i][j]);
/*to make sure*/
printf("%c ", m[i][j]);
}
printf("\n\n");
}
当您在上一个scanf()
上按Enter键时,输入缓冲区中会出现换行符。在%c
前面添加一个空格会让scanf()
跳过该换行符(和其他空格)。