Я пытаюсь создать программу на C, которая после каждого четного числа добавит «0». Но у меня проблема. Если я вставил, например, только четные числа (5 или более номеров), программа выйдет из строя.добавление 0 char после каждого четного числа в массиве C
Ниже приведена программа, которую я имею прямо сейчас.
Мне нужны некоторые указания или образец кода, чтобы указать, что я сделал не так, и как я могу это исправить.
void main()
{
int *a, i, n, m;
printf("dimensiune=");
scanf_s("%d", &n);
a = (int*)malloc(n*sizeof(int));
for (i = 0; i < n; i++)
{
printf("a[%d]=", i + 1);
scanf_s("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
if (a[i] % 2 == 0)
{
n++;
a = (int*)realloc(a, n*sizeof(int));
for (m = n - 1; m > i;m--)
{
a[m + 1] = a[m];
}
a[i + 1] = 0;
i++;
}
}
printf("\n currently you have %d numbers in this string\n", n);
printf("your string \n");
for (i = 0; i < n; i++)
{
printf("a[%d]=%d\n", i + 1, a[i]);
}
}
'void main()' должно быть лучше 'int main (void)' или что-то еще. –
[Пожалуйста, просмотрите эту дискуссию о том, почему бы не использовать возвращаемое значение 'malloc()' и family в 'C'.] (Http://stackoverflow.com/q/605845/2173917). –
Это решение, спасибо, можете объяснить, почему, в чем разница между void main() и int main (void)? – Gabriel