0

QueryPerformanceFrequency(&frequency);このコードはandQueryPerformanceCounter(&start);関数がなくても問題ありません。また、シーケンシャル検索プログラムでこの関数を使用すると、それも機能します。ここで何が問題なのかわかりませんでした。セグメンテーション違反が発生するのはなぜですか?

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
LARGE_INTEGER frequency;
LARGE_INTEGER start;
LARGE_INTEGER end;
double interval;

int i, c, first, last, middle, n, search, array[20000];

FILE *fptr;

//read sorted list file!
if((fptr = fopen("sorted.txt","r"))==NULL){
printf("Error in reading file !\n");
return 0;
}
//array of sorted list!
while(!feof(fptr)){
if(!feof(fptr)){
fscanf(fptr,"%d",&array[i]);
i++;}

}


printf("Enter value to find\n");
scanf("%d",&search);


first = 0;
last = 20000 - 1;
middle = (first+last)/2;

QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&start);

while( first <= last )
{
  if ( array[middle] < search )
     first = middle + 1;    
  else if ( array[middle] == search ) 
  {
     printf("%d found at location %d.\n", search, middle+1);
     break;
  }
  else
     last = middle - 1;

  middle = (first + last)/2;
}
if ( first > last )
  printf("Not found! %d is not present in the list.\n", search);

  QueryPerformanceCounter(&end);
interval = (double) (end.QuadPart - start.QuadPart) / frequency.QuadPart;

printf("%f\n", interval);

system("pause");

return 0;   
}
4

1 に答える 1

4

私が知る限り、あなたは i を何かに定義していませんが、i++ を持っています。少なくとも、このコードを試したときに発生するエラーです。

于 2013-03-30T17:20:40.493 に答える