PDA

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



roya24
شنبه 12 تیر 1389, 11:30 صبح
سلام
من برنامه ای نوشتم که اول یه کلمه به عنوان رشته رو میگیره که از نوع آرایه ی یک بعدی هست با اندازه ی 80،بعد میاد فایل متنی مورد نظر رو باز میکنه و با دستور fgets محتویات فایل رو در یک متغیر به نام str1 میریزه،بعد من باید مقایسه انجام بدم بین کلمه ای که وارد کردم و محتویات فایلم،اینجا 2 تا دستور داریم : یکی strcmp که من فکر می کردم مقایسه بیم کلمه ی من و محتویات فایلم رو انجام میده ولی راستش به نتیجه نرسیدم و یه دستور دیگه هم فکر کنم بشه ازش استفاده کرد به اسم strcspn ولی اینم ،فکر کنم من طرز استفادش رو نمی دونم
خلاصه می خوام بین کلمه ی ورودی ام و محتویات فایلم مقایسه کنه ، اگر توش بود یه جواب بده
ممنون می شم راهنماییم کنید ،چون 3 روزه دارم روش فکر میکنم وخلاصه کمی گیج شدم:متعجب:

tdkhakpur
شنبه 12 تیر 1389, 15:50 عصر
از strcmp استفاده کنید یا قسمتی از کدتان را که مشکل دارید ارسال کنید.

roya24
شنبه 12 تیر 1389, 18:19 عصر
یه سوال ، برای جستجو در یک فایل متنی بید از جستجوی دودویی استفاده کرد یا بهتره از جستجوی ترتیبی استفاده کرد؟

tdkhakpur
یک شنبه 13 تیر 1389, 13:05 عصر
برای جستجو در یک فایل متنی بید از جستجوی دودویی استفاده کرد یا بهتره از جستجوی ترتیبی استفاده کرد؟

بستگی دارد فایل شما چه ساختاری داشته باشد.(از نظر داده هایی که پشت سر هم قرار گیرفته اند).
ولی در حالت استاندارد جستجوی ترتیبی آخرین راه از نظر سرعت دسترسی هست که می توان انجام داد.

silver2000
یک شنبه 13 تیر 1389, 15:07 عصر
از strcmp استفاده کنید یا قسمتی از کدتان را که مشکل دارید ارسال کنید.
سلام اگه میشه کدش رو بذارین چون من هم همین مشکل رو دارم:ناراحت:

tdkhakpur
یک شنبه 13 تیر 1389, 15:28 عصر
کد ساده :
fgets این قابلیت را ندارد که رشته مورد نظر شما را داخل فایل متنی تشخیص دهد به همین خاطر nfgets هم ضمیمه میشود(البته این برنامه جستجوی کلمات واقعی در فایل را برای شما نشان میدهد برای جستجوی دقیق با توجه به خود رشته روش دیگری باید در نظر گرفته شود )


//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
void nfgets(char *str, FILE *fp)
{
int c=0;
str[c] = 0;
while( !feof(fp)){
str[c] = fgetc(fp);
if(str[c]==' '){
str[c] = 0;
break;
}else C++‎‎;
}
}
int main(int argc, char* argv[])
{
FILE *fp;
fp = fopen("1.txt", "rb");
char text[32], tmp[128];
int len;
cin>>text;
len = strlen(text);
if( fp!=NULL){
while(!feof(fp)) {
nfgets(tmp, fp);
if( strcmp(text, tmp ) == 0 ){
cout<<text<<" Finded. \n";
getch();
}
}
}
fclose(fp);
getch();
return 0;
}
//---------------------------------------------------------------------------