Таким образом, в основном я пытался сохранить символ на 6-й позиции в каждой строке, и мне это удалось, но я получаю одно и то же значение, сохраненное дважды в нужном месте и его последующем местоположении.
Я не знаюЯ не знаю, что происходит.
- Я пытался использовать while ((getchar ())! = '\ n');<- Не помогает </li>
- Поместите getchar () перед scanf
- И, наконец, getchar () после scanf, по крайней мере, позволяет мне ввести значение, два вышеперечисленных просто выводят пустой массив
Редактировать 1 - Изменены столбцы с 5 на 6, так как "chux" сказал, что предыдущие значения приводили к внешнему распределению.Редактировать 2 - Прокрутить вниз для поиска рабочего кода и последней ошибки
char *arr_input(int limit){
char *p=(char*)malloc(limit*6*sizeof(char)); // Edit 1
int i=0,j;
//while ((getchar()) != '\n');
while(i<limit){
getchar();
scanf("%c",&p[i*5+5]);
i++;
}
arr_display(p,limit);
return p;
}
Value at row 0 is =
Value at row 0 is =
Value at row 0 is =
Value at row 0 is =
Value at row 0 is =
Value at row 0 is = 1
Value at row 1 is = 1
Value at row 1 is =
Value at row 1 is =
Value at row 1 is =
Value at row 1 is =
Value at row 1 is = 2
Value at row 2 is = 2
Value at row 2 is =
Value at row 2 is =
Value at row 2 is =
Value at row 2 is =
Value at row 2 is = 3
Input Verified
Вывод при объявлении с использованием calloc ()
Value at row 0 is = 0
Value at row 0 is =
Value at row 0 is =
Value at row 0 is =
Value at row 0 is =
Value at row 0 is = 1
Value at row 1 is =
Value at row 1 is = 0
Value at row 1 is =
Value at row 1 is =
Value at row 1 is =
Value at row 1 is = 2
Value at row 2 is =
Value at row 2 is =
Value at row 2 is = 0
Value at row 2 is =
Value at row 2 is =
Value at row 2 is = 3
Рабочий код, за исключением того, что calloc () не инициализируется 0значение, поэтому я сделал вручную
char *arr_input(int limit){
char *p=(char*)calloc(limit*6,sizeof(char));
int i=0;
while(i<limit){
scanf(" %c",&p[i*6+5]);
i++;
}
zeroIn(p,limit);
arr_display(p,limit);
return p;
}
void *zeroIn(char *p ,int limit){
int i=0,j=0;
for(i=0;i<limit;i++){
for(j=0;j<5;j++)
p[i*6+j]='0';
}
//arr_display(p,limit);
}
char *arr_display(char *disp,int size){
int i=0,j=0;
for (i = 0; i <size ;i++)
{
for(j=0;j<6;j++){
printf("Value at row %d is = %c\n",i,disp[i*6+j]);
}
}
}
Value at row 0 is = 0
Value at row 0 is = 0
Value at row 0 is = 0
Value at row 0 is = 0
Value at row 0 is = 0
Value at row 0 is = 1
Value at row 1 is = 0
Value at row 1 is = 0
Value at row 1 is = 0
Value at row 1 is = 0
Value at row 1 is = 0
Value at row 1 is = 2
Value at row 2 is = 0
Value at row 2 is = 0
Value at row 2 is = 0
Value at row 2 is = 0
Value at row 2 is = 0
Value at row 2 is = 3