まですべてを実行すると、forループを入力することを拒否し、ちょうどハングします。Cプログラムはループには入っていませんが、何かを実行するとき何らかの理由で
main()
{
char *buffer;
int chunk_offset, current_chunk_number, total_chunks;
int filelen;
filelen = ReadFileintoBuffer(buffer);
printf("file read \n"); // error break point 1
int events = filelen/eventlen; // number of 512 + 2 32 bit events events with timecode
int sp = 0;
int i,j;
int toterror[25];
printf("file of length %d has %d events \n", filelen, events);
printf(" i = %d \n", i);
for(i = 0; i < events; i++)
{
printf("analyzed %d events of %d", i, events);
sp=0;
int error[13];
Analyzeevent(buffer+i*eventlen, error);
if(error[0])
{
sp = 12;
}
for(j =1; j < 13; j++)
{
toterror[j+sp] += error[j];
}
}
printf("post for loop");
Printerrs(toterror, events);
exit(0);
}
その後、ダウンI =(この特定のケースでは9727988)に至るまで、何を印刷します。それだけですべて停止します。何が起こったのか?私はC++を学び、プログラミングは非常に奇妙で厄介です。コンパイラは何の警告も何も投げません
あなたの助けを前にありがとうございます。
編集:HERESにリング0 ReadFileintoBufferへのコードのために:
int ReadFileintoBuffer(char *buffer)
{
int filelen;
char text[200];
printf("Input File: ");
scanf("%s" ,text);
FILE *file = 0;
int i;
//Open file
file = fopen(text, "rb");
if (!file)
{
fprintf(stderr, "Unable to open file \n");
exit(0);
}
//Get file length
fseek(file, 0, SEEK_END); // find the end of the file
filelen=ftell(file); // set the current pointer (currently at end from above) as file length
fseek(file, 0, SEEK_SET); // set pointer back to beginning of file
//Allocate memory
buffer=(char *)malloc(filelen+1);
if (!buffer)
{
fprintf(stderr, "Memory error! \n");
fclose(file);
return;
}
//Read file contents into buffer
fread(buffer, filelen, 1, file);
fclose(file); // clse the file, all in buffer now
return filelen;
}
C++で 'main'関数の戻り値の型を常習的に省略しましたか? K&R Cはデフォルトの 'int'を仮定していますが、ANSI Cではそうではなく、かなりの時間"ベストプラクティス "とはみなされていません... –
また、デバッガでコードを実行しましたか? 'events'の値は常に0より小さく、' for'ループは実行されない可能性があります。より使い慣れたC++でも同じ動作が見られます。 –
デバッガを使用していません。デバッガを使い始めるとすぐに問題はすぐにわかります。 – abelenky