221 名前:187 スレッド出来ました [2007/11/10(土) 03:02:08 ] #include <iostream> #include <windows.h> #include <process.h> using namespace std; #define N 100 #define K 320000 unsigned int su[N][256]; char fname[N][256],chk[N]; unsigned WINAPI open(void *p){ unsigned long size,n=(int)p; char *buf=new char [K+100]; HANDLE fp=CreateFile(fname[n],GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); while(1){ ReadFile(fp,buf,K,&size,NULL); if(size==0){chk[n]=0;return 0;} for(int i=0;i<size;i++)su[n][ (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,i; HANDLE hf[N]; for(n=0;n<N;n++)for(i=0;i<256;i++)su[n][i]=0;for(n=0;n<N;n++)chk[n]=0; for(;;){ if(chk[n]==0){ for(;;){if(!FindNextFile(hd, &fd))goto end; if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))break;} strcpy(fname[n],fd.cFileName); chk[n]=1; hf[n]=(HANDLE)_beginthreadex(NULL, 0, open,(void*)n, 0 ,NULL);} n++;if(n>=N)n=0;} end: WaitForMultipleObjects(N, hf, TRUE, INFINITE); for(n=1;n<N;n++)for(i=0;i<256;i++)su[0][i]+=su[n][i]; for(i=0;i<256;i++)cout<<i<<" no kosu "<<su[0][i]<<endl;}