Программа перестает работать и возвращает значение 3221225477 в C - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть эта проблема, номер ошибки 3221225477 на экране вывода моей программы. Массив с пятью размерами запускается без ошибок, но один и более является критическим. Код:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <time.h>
#include "windows.h"
#include "psapi.h"

int size;
int array[];
time_t tStart;
time_t tEnd;
double sum;
double avg;

void reading(char pName[]){
  int i=0;
  FILE *f;
  if ((f=fopen(pName,"r"))==NULL){
        printf("file failed to open\n");
  }
  else{ 
    while(i < size){      
    if (fscanf(f, "%d", &array[i])!= EOF){
        //printf("%d\n", array[i]);
        i++;        
     }      
     else{
       break;
     }                      
    }             
  } 
  fclose(f);   
}

void insertionSort() {
    int i,j;
    int temp;
    for (i = 1; i < size; i++) {
        temp = array[i];
        j=i-1;
        while((j >= 0) && (temp < array[j])) { 
            array[j + 1]= array[j];
            j--;
        }
        array[j + 1]= temp;
    }         
}

void toString(){
    int i;
    for(i=0; i < size; i++){
        printf("%d ", array[i]);
    }
}

void test(int pSize, char pName[]){
    size = pSize;
    array[size];
    int i;
    for(i=0; i < 200; i++){
        reading(pName);
        time(&tStart);
        insertionSort();
        time(&tEnd);
        reading(pName);
        time(&tStart);
        insertionSort();
        time(&tEnd);
        sum = sum + ((double) (tEnd - tStart)   / 1000000);
    }
    avg = sum / 200;
    printf("avg= %f\n", avg);
}

void testing(){
    test(500,"500.txt");
    test(1000,"1000.txt");
    test(40000,"40000.txt");
}

int main(){
    testing();
}

У вас есть идеи, чтобы это исправить, пожалуйста?

пример текстового файла:

 5
 89
 1516
 15689
 88
 568
 684
 .
 .
 .
 size is a name of file

Целью кода является сравнение времени, прошедшего между двумя алгоритмами сортировки. (да, в коде только один, дважды)

...