Я работаю над этим 2 днями и не могу найти свои ошибки, программа запускается, но она останавливается (ждет) после ввода 3 или 4. кто-нибудь может помочь я где мои ошибки, пожалуйста?проблемы с указателями на C, не могу найти мои ошибки
Программа должна выполнить следующие действия:
Пользователь будет предложено сколько чисел он хочет войти (3 или 4). 3 или 4 целых значения будут введены пользователем и сохранены внутри массива. Программа подсчитывает, сколько нулей введено пользователем. Затем программа удваивает массив до двойного размера, где каждый элемент имеет свою копию рядом с ним. Распечатайте новый массив в конце.
#include <stdio.h>
#include <stdlib.h>
static int cnt = 0;
/* Read <cnt> Integers into given array.
Return number of entered zeros */
int* readInts(int *arr) {
int i=0, *zeros = (int*)malloc(sizeof(int));
while(i <= cnt) {
scanf("%d", arr++);
if (arr[i++] == 0) *zeros++;
}
return zeros;
}
/* Create "double-sized" copy of array (duplicate each value)*/
void extend(int *arr, int *newarr) {
int i,j;
newarr = (int*) malloc(2 * cnt * sizeof(int*));
for (i=0,j=0; i <= cnt; i++) {
newarr[j++] = arr[i];
newarr[j++] = arr[i];
}
}
int main(void)
{
int arr[4], *zeros, i;
printf("How many integers (3 or 4)?\n");
scanf("%d", &cnt);
zeros = readInts(arr);
printf("You entered %d zero(s)!\n", *zeros);
int *newarr;
extend(arr, newarr);
for (i=0; i < cnt*2; i++) printf("%d ", newarr[i]);
printf("\n");
return 0;
}
Вместо того, чтобы запрашивать ответы, это может быть полезно прочитать для вас: http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –