Я пытаюсь прочитать некоторые входные данные, используя fgets (), но мне нужно сохранить входные данные в динамическом массиве, называемом userNumbers, как мне заставить realloc () работать с fgets ()?Моя программа ломается, когда я пытаюсь прочитать более 8 элементов (т.е. 1,2,3,4,5,6,7,8 работ, но 1,2,3,4,5,6,7,8,9,10не).Другое дело, что я ДОЛЖЕН использовать fgets ().Заранее спасибо.
size_t capacity = 4;
size_t size = 0;
char* userNumbers = (char*)malloc(capacity * sizeof(char));
char** realNumStr = (char**)malloc(capacity * sizeof(char*));
double* realNumDouble = (double*)malloc(capacity * sizeof(double));
double* realNumDoubleFinal = (double*)malloc(capacity * sizeof(double));
double* realNumDoubleMedian = (double*)malloc(capacity * sizeof(double));
if (userNumbers == NULL || realNumDouble == NULL || realNumDoubleFinal == NULL || realNumStr == NULL)
{
printf("insufficient Memory");
return EXIT_FAILURE;
}
//User's input
while (fgets(userNumbers, capacity, stream))
{
size += strlen(userNumbers);
while (size >= capacity)
{
capacity = size * 2;
char* userNumbers2 = realloc(userNumbers, capacity * sizeof(char)+1);
char** realNumStr2 = realloc(realNumStr, capacity * sizeof(char*)+1);
double* realNumDouble2 = realloc(realNumDouble, capacity * sizeof(double));
double* realNumDoubleFinal2 = realloc(realNumDoubleFinal, capacity * sizeof(double));
if (userNumbers2 == NULL || realNumDouble2 == NULL || realNumDoubleFinal2 == NULL || realNumStr2 == NULL)
{
free(userNumbers);
free(realNumDouble);
free(realNumDoubleFinal);
free(realNumStr);
printf("insufficient Memory");
return EXIT_FAILURE;
}
userNumbers = userNumbers2;
realNumStr = realNumStr2;
realNumDouble = realNumDouble2;
realNumDoubleFinal = realNumDoubleFinal2;
}
// ... Код продолжается ...}
// Сгенерирована ошибка: HEAP [rstats.exe]: неверный адрес, указанный для RtlValidateHeap (0000026E15F20000,0000026E15F298F0) stat.exe вызвал точку останова.
точка останова сработала здесь: if (! Has_cctor) _cexit ();