Как уже отмечали другие, вы выделяете пространство для n
символов, но вам действительно нужно пространство для n
строк по 4 символа в каждой (3 символа, введенных пользователем, и нулевой терминатор).
Есть несколько способов сделать это. Вы можете сначала выделить n
char *
переменных для указания на строки, а затем выделить 4 байта для каждой строки:
int main( int argc, char *argv[] )
{
char **rows;
int i, n;
printf("\nEnter the amount of rows in the telephone pad: ");
scanf("%d", &n);
rows = malloc( n * sizeof rows[0] );
printf("\nNow enter the configuration for the pad:\n");
for( i = 0; i < n; i++ ) {
rows[i] = malloc(4);
scanf("%3s", rows[i]);
printf("\n\t%s\n", rows[i]);
}
return 0;
}
Или вы можете выделить n
4-символьные массивы заранее:
int main( int argc, char *argv[] )
{
char (*rows)[4];
int i, n;
printf("\nEnter the amount of rows in the telephone pad: ");
scanf("%d", &n);
rows = malloc( n * sizeof rows[0] );
printf("\nNow enter the configuration for the pad:\n");
for( i = 0; i < n; i++ ) {
scanf("%3s", rows[i]);
printf("\n\t%s\n", rows[i]);
}
return 0;
}