Yardımıma ihtiyacım var. Verileri girmeye ve bir işaretçiye kaydetmeye çalıştığımda programım çöküyor. Verileri dinamik dizinin ilk elemanına başarılı bir şekilde girebilirim, hatta bu verileri yazdırabilirim. Ancak, bundan sonra, ikinci elemanı girmeye çalıştığımda programım çöküyor. Hata ayıklayıcı herhangi bir hata veya uyarı göstermiyor.Bir işlevdeki işaretçilerle ilgili sorunlar
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
static const char SPRTR[] = "//---------------------------------------------------------------------------//";
static const char ERR_MSG[] = "ERROR! Try again.";
void create_array(int **data, int *n, int *arr_max)
{
int i;
int err;
char temp;
do
{
err = 0;
printf("\nMaximum number of array elements: ");
if (((scanf("%d", arr_max)) < 1) || (*arr_max <= 0))
{
printf("%s\n", ERR_MSG);
err = 1;
}
printf("\n%s\n", SPRTR);
while ((temp = getchar()) != '\n' && temp != EOF);
} while (err != 0);
do
{
err = 0;
printf("\nNumber of array elements (max. %d): ", *arr_max);
if (((scanf("%d", n)) < 1) || (*n > *arr_max) || (*n <= 0))
{
printf("%s\n", ERR_MSG);
err = 1;
}
printf("\n%s\n", SPRTR);
while ((temp = getchar()) != '\n' && temp != EOF);
} while (err != 0);
*data = (int *) malloc(sizeof(int) * (*n));
for (i = 0; i < *n; i++)
{
do
{
err = 0;
printf("\nValue of %d array element: ", i);
if (((scanf("%d", *(data + i))) < 1) || (*(*(data + i)) < 0))
{
printf("%s\n", ERR_MSG);
printf("\n%s\n", SPRTR);
err = 1;
}
while ((temp = getchar()) != '\n' && temp != EOF);
} while (err != 0);
}
}
int main()
{
int n;
int arr_max;
int *data;
create_array(&data, &n, &arr_max);
return 0;
}
Debugger ........................ .... –