PDA

View Full Version : جستجوی یک کلمه در فایل



Yasersadegh
شنبه 08 خرداد 1389, 12:57 عصر
سلام دوستان عزیز
من یه فایل دارم که می خوام با استفاده از سی ++ مثلا عبارت *MZP* رو در داخل اون پیدا کنم!
کدی که نوشتم به صورت زیر هست:



HANDLE hFile1,hFile2;
char str[5];
DWORD byetesRead,byetesWrite;
WCHAR logfile1[MAX_PATH];
wcscpy(logfile1,TEXT("Target.exe"));
WCHAR logfile2[MAX_PATH];
wcscpy(logfile2,TEXT("File1.exe"));
hFile1 = CreateFile(logfile1, // file to open
FILE_READ_DATA, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // default security
OPEN_ALWAYS, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
hFile2 = CreateFile(logfile2, // file to open
FILE_WRITE_DATA, // open for reading
FILE_SHARE_WRITE, // share for reading
NULL, // default security
OPEN_ALWAYS, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
do{
ReadFile(hFile1,str,1, &byetesRead, NULL);
if(strcmp(str,"*")==0)
{
ReadFile(hFile1,str,4, &byetesRead, NULL);
printf("\n%S >>%d",str,byetesRead);
if(strcmp(str,"MZP*")==0)
{

}
else
{
WriteFile( hFile2,"*", 1, &byetesWrite, NULL);
}
}
WriteFile( hFile2, str, byetesRead, &byetesWrite, NULL);
}while(byetesRead>0);


ولی با این کد در حالی که چندین کاراکتر * در فایلم موجود هست و یک عبارت *MZP* هم هست، ولی هیچ کدوم رو پیدا نمی کنه!
دوستان لطف می کنن اگه اشکال کد بنده رو بفرمایند.:چشمک:

sh4mid
شنبه 08 خرداد 1389, 13:32 عصر
سلام
اگه می خواهی که عبارتهای مشابه MZP رو پیدا کنی نباید از strcmp استفاده کنی باید از Regular Expression ها استفاده کنی تو google بزن دستت میاد چی میگم

tdkhakpur
شنبه 08 خرداد 1389, 23:25 عصر
دستی کد و اصلاح شد.


HANDLE hFile1,hFile2;
char str[5];
int c=0, Finded=0;
DWORD byetesRead,byetesWrite;
WCHAR logfile1[MAX_PATH];
wcscpy(logfile1,TEXT("Target.exe"));
WCHAR logfile2[MAX_PATH];
wcscpy(logfile2,TEXT("File1.exe"));
hFile1 = CreateFile(logfile1, // file to open
FILE_READ_DATA, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // default security
OPEN_ALWAYS, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
hFile2 = CreateFile(logfile2, // file to open
FILE_WRITE_DATA, // open for reading
FILE_SHARE_WRITE, // share for reading
NULL, // default security
OPEN_ALWAYS, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
do{
ReadFile(hFile1, &str[c], 1, &byetesRead, NULL);
if( c<4 ) c++;
else{
if(memcmp(str,"*MZP*", 5)==0)
Finded ++;
memcpy(&str[0], &str[1], 3);
}
}while(byetesRead>0);

Yasersadegh
یک شنبه 09 خرداد 1389, 12:28 عصر
دوست عزیز جناب خاکپور(tdkhakpur) ممنون از راهنماییتون!:تشویق::خجالت:
موفق باشید:چشمک: