187 名前:デフォルトの名無しさん [2007/11/09(金) 10:24:19 ] ビット列の出現個数を数えたいのですが毎回結果が違います 何ででしょうか? #include <iostream> #include <windows.h> #include <process.h> using namespace std; #define N 1000 #define K 320000 unsigned int su[256]; unsigned WINAPI open(void *p){ unsigned long size; char *buf=new char [K+100]; HANDLE fp=CreateFile((char*)p,GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); ReadFile(fp,buf,K,&size,NULL); for(int i=0;i<size;i++)su[ (unsigned char)buf[i] ]++;} main(){ WIN32_FIND_DATA fd; char path[200]="d:\\aaa\\",serchpath[200]; strcpy(serchpath, path); strcat(serchpath, "*"); SetCurrentDirectory(path); HANDLE hd = FindFirstFile(serchpath, &fd); int n; HANDLE hf[N]; for(n=0;n<256;n++)su[n]=0; for(n=0;;n++){ for(;;){if(!FindNextFile(hd, &fd))goto end; if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))break;} hf[n]=(HANDLE)_beginthreadex(NULL, 0, open,(void*)fd.cFileName, 0 ,NULL);} WaitForMultipleObjects(N, hf, TRUE, INFINITE); end: for(n=0;n<256;n++)cout<<n<<" no kosu "<<su[n]<<endl;}