ディレクトリ内でバイナリファイルを開き、それに応じて操作を実行しようとしていました。この行は、以下のロジックが正しく動作する表現ではありません。VC++ 2008でプログラムを実行中に未処理の例外が発生しました
int main(int argc, char* argv[])
{
int k=0;
FILE *fp;
unsigned char cd[255];
unsigned long cd1[500];
char *buffer;
unsigned long sa=80044;
int j=0,i=0,n=0;
DIR *dir;
struct dirent *direntry; //could be a file, or a directory
dir = opendir("C:/Documents and Settings/Administrator/Desktop/vicky");
if(!dir) {
printf("Error: directory did not open!\n");
return 1;
}
while((direntry=readdir(dir))!=NULL) {
if(++k < 100)
{
printf("%s\n",direntry->d_name);
sprintf(buffer,"%s",direntry->d_name);//here i got the unhanded exception.
fp=fopen("buffer","rb");
sa=sa-44;
sa=sa/8;
if(fp==NULL)
{
printf("file not found!");
}
else
{
for(j=0;j<(sa);j++)
{
for(i=0;i<8;i++)
{
cd[i]=fgetc(fp);//get each character from file
// printf("%c",cd[i]);
}
if(i==8)//if the i is 8 the character then do the following,just read 8 bytes and then calculate the cd1.
{
sa=sa-8;
cd1[j]=(cd[6] * 65536 + cd[5] * 256 + cd[4]);//multiply the positional weightage and calculate the cd1,which contains the 7 digits decimal value.
//if((cd1[j]> 0x7FFFFF)&&(cd1[j]<=0xFFFFFF))
//cd1[j]=cd1[j]- 0xFFFFFF;
//cd1[j]=cd1[i] * -1;
}
printf("completes first 8 bytes read:%d - %d",j,cd1[j]);//print j and cd1[j] value in console window
}
fclose(fp);//close the file
}
}
if((strcmp(direntry->d_name, "text.txt"))==0) {
printf("\nThe %s file has been found\n",direntry->d_name);
k=-99; //just a flag value to show the file was found
break;
}
}
if(k!=-99)
printf("\nThe test.txt file was not found\n");
closedir(dir);
printf("\n");
getchar();
return 0;
}
これは私が得たエラーです:READ_TEXT.exeで0x1029a189で未処理の例外(msvcr90d.dll):0xc0000005で:アクセス違反の書き込み場所0xcccccccc.Kindlyは私に「direntry-> d_name」ファイルを読むための任意の提案をしましょう上記のロジックを処理するための名前。
バッファが割り当てられていません – CashCow
割り当て問題を修正した後、 "buffer"という名前のファイルを開こうとします。 'fopen'の呼び出し中の文字列を文字列' 'buffer ''ではなく変数 'buffer'に変更します。また、成功するためには、ファイルのフルパスを 'buffer'変数に入れる必要があります。 –
joachimに感謝、私はディレクトリ内の各ファイルを読み込み、コンソールウィンドウに表示することができます。その後、私はファイルを開くしようとしています.whichはここで起こっていません。私は変数としてバッファを変更しました。string.dir varaibleにはディレクトリパスが含まれていますか?これを正しく動作させる方法はありますか? – user1133907