Şimdi Ara

bakalım bunun üstesinden kim gelecek ;)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
357
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar elimde kendi yazdığım (c) dilinde bi program var ama bi türlü hatalarını ayıklayamadım.Amacım cmd ekranından bir dizin girilecek, girilen dizinin içindeki alt klasörler dahil olmak üzere tüm txt uzantılı dosyaları arayacak..ardından sizden txt uzantılı dosyaların içinde aramanız için bir cumle girmenizi isteyecek.ve bulduğu tüm txt uzantılı dosyalarda bu cümleyi arayacak.eğer girilen cümle bulunursa sizden tekrar bir cümle girmenizi isteyecek txt nin içinde bulduğu ilk girdiğimiz cümleyi yenisiyle değiştirip değiştirilen cümlenin iki kelime öncesiyle iki kelime sonrasını ekrana yazdıracak...Bu arada büyük harf küçük harf duyarlılığı olacak..
    Bulana benden çikolata ;))


     
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<windows.h>
    #include<conio.h>

    void txtAra(const char *);
    int cumleAra(char [1024],char [100],char [100]);

    main(){
    char dizin;
    gets(&dizin);
    txtAra(&dizin);
    printf("\n\n====================================================");
    getch();
    }
    //===============================================================================================================
    void txtAra(const char *dizin)
    {
    WIN32_FIND_DATA bulunandosya;
    HANDLE anlikdosya;
    char aranandizin[1024]={0};
    char yeniCumle[100];
    char cumle[100];
    sprintf(aranandizin,"%s\\*",dizin);
    anlikdosya=FindFirstFile(aranandizin,&bulunandosya);
    char tumDizin[1024]={0};
    int sonuc,kontrol1;

    printf("\nGirilen %s dizininde bulunan .txt uzantili dosyalarin icinde \n",&dizin);
    printf("\nAramak istediginiz cumleyi giriniz : ");
    scanf("%s",cumle);
    printf("girdiginiz cumleyi hangi cumle ile degistirmek istiyorsunuz?\ngiriniz : ");
    scanf("%s",yeniCumle);
    printf("====================================================\n\n");


    for(;;){

    if(bulunandosya.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
    {
    if(strcmp(bulunandosya.cFileName,".")&&strcmp(bulunandosya.cFileName,"..")){
    sprintf(aranandizin,"%s\\%s",dizin,bulunandosya.cFileName);
    txtAra(aranandizin);}
    }



    else{
    if(!strcmp(bulunandosya.cFileName+strlen(bulunandosya.cFileName)-4,".txt")){
    sprintf(tumDizin,"%s\\%s\n",dizin,bulunandosya.cFileName);
    cumleAra(tumDizin[],cumle[],yeniCumle[]);}
    sonuc=cumleAra(tumDizin[],cumle[],yeniCumle[]);
    if(sonuc==1){kontrol1=sonuc;}
    }


    if(FindNextFile(anlikdosya,&bulunandosya)== 0 ){
    return;}

    }


    if(kontrol1 != 1)
    printf("Aradiginiz cumle girdiginiz dizindeki dosyalarin iceriginde yok!");
    }


    //===============================================================================================================


    int cumleAra(char tumdizin[],char cumle[],char yeniCumle[])
    {
    FILE *openTxt;
    char formatliDizin[1024];
    char bulunanCumle[512];
    char tumMetin[4096]={0};
    int dizinUzunlugu = 0 , metinuzunlugu = 0 , cumleUzunlugu=0 , kontrol2 = 0;
    int a,b,i,j,k,sayac,katarTut,iki=2,gerisayac,ilerisayac,yaz;
    char *kontrol;
    dizinUzunlugu=strlen(tumdizin);
    metinUzunlugu=strlen(tumMetin);
    cumleUzunlugu=strlen(cumle);

    //==================================================================
    j=0; //kesikli şeritler arasında
    for(i=0; i<dizinUzunlugu; i++) //kalan kısım tümDizin
    { //stringimizin formatını
    formatliDizin[i+j] = tumdizin[i]; //değiştirmeye yarar
    if(tumdizin[i] == "\\" )
    { // örnek format;
    j=j+1; // c:\xdos\y
    formatliDizin[i+j] = tumdizin[i]; // değiştirilmiş hali; ;
    } // c:\\xdos\\y
    }
    formatliDizin[i+j+1] = '\0';
    // *** fopen ile dosya açmak için ***
    //===================================================================

    openTxt=fopen(formatliDizin,"r");
    fgets(tumMetin,4096,formatliDizin);
    fclose(openTxt);

    kontrol=strstr(tumMetin,cumle);

    if(kontrol != NULL)
    {
    kontrol2=1;
    printf("%s\n\ndizininin icinde bulunan cumle;\n",tumdizin);

    for(a=0;a<metinUzunlugu-cumleUzunlugu+1;a++)
    {

    if(a==0){
    katarTut=a;
    katarTut2=a;
    sayac=0;
    gerisayac=0;
    ilerisayac=0;
    gerisar=0
    ilerisar=0
    for(b=0;b<cumleUzunlugu;b++)
    {
    if(cumle[b]==tumMetin[katarTut])
    {
    sayac=sayac+1;
    katarTut=katarTut+1;

    if(sayac==cumleUzunlugu)
    {
    while(iki>0 && ((katarTut2-1)!=0) && (katarTut2!=0))
    {
    if(tumMetin[(katarTut2-1]==" " || (tumMetin[katarTut2-1]=="\n") || (tumMetin[katarTut2-1]==".") || (tumMetin[katarTut2-1]==","))
    {iki=iki-1;
    gerisar=gerisayac;}

    gerisayac=gerisayac+1;
    katarTut2--;
    }

    while(iki>0 && (tumMetin[katarTut2+cumleUzunlugu]!=NULL))
    {
    if(tumMetin[katarTut2+cumleUzunlugu]==" ") || (tumMetin[katarTut2+cumleUzunlugu]=="\n") || (tumMetin[katarTut2+cumleUzunlugu]==".") || (tumMetin[katarTut2+cumleUzunlugu]==",")
    {iki=iki-1;
    ilerisar=ilerisayac;}

    ilerisayac=ilerisayac+1;
    katarTut2++;
    }

    for(yaz=a-gerisar;yaz<(a+ilerisar);yaz++)
    {printf("%s",tumMetin[yaz]);}

    printf("Eski metinde bulunan cumle sirasi : %d\n\n",&a);

    printf("\n\nDegistirilmis metin : \n");

    for(yaz=a-gerisar;yaz<a;yaz++)
    {printf("%s",tumMetin[yaz]);}

    printf("%s",yeniCumle);

    for(yaz=a;yaz<a+ilerisar;yaz++)
    {printf("%s",tumMetin[yaz]);}
    }
    }
    }
    }


    if((tumMetin[a]==".") || (tumMetin[a]=="\n") || (tumMetin[a]==" ") || (tumMetin[a]==","))
    {
    katarTut=a+1;
    katarTut2=a+1;
    sayac=0;
    gerisayac=0;
    ilerisayac=0;
    gerisar=0
    ilerisar=0
    for(b=0;b<cumleUzunlugu;b++)
    {
    if(cumle[b]==tumMetin[katarTut])
    {
    sayac=sayac+1;
    katarTut=katarTut+1;

    if(sayac==cumleUzunlugu)
    {
    while(iki>0 && ((katarTut2-1)!=0) && (katarTut2!=0))
    {
    if(tumMetin[(katarTut2-1]==" " || (tumMetin[katarTut2-1]=="\n") || (tumMetin[katarTut2-1]==".") || (tumMetin[katarTut2-1]==","))
    {
    iki=iki-1;
    gerisar=gerisayac;
    }

    gerisayac=gerisayac+1;
    katarTut2--;
    }

    while(iki>0 && (tumMetin[katarTut2+cumleUzunlugu]!=NULL))
    {
    if(tumMetin[katarTut2+cumleUzunlugu]==" ") || (tumMetin[katarTut2+cumleUzunlugu]=="\n") || (tumMetin[katarTut2+cumleUzunlugu]==".") || (tumMetin[katarTut2+cumleUzunlugu]==",")
    {
    iki=iki-1;
    ilerisar=ilerisayac;
    }

    ilerisayac=ilerisayac+1;
    katarTut2++;
    }

    for(yaz=a-gerisar;yaz<(a+ilerisar);yaz++)
    {printf("%s",tumMetin[yaz]);}

    printf("Eski metinde bulunan cumle sirasi : %d\n\n",&a);

    printf("\n\nDegistirilmis metin : \n");

    for(yaz=a-gerisar;yaz<a;yaz++)
    {printf("%s",tumMetin[yaz]);}

    printf("%s",yeniCumle);

    for(yaz=a;yaz<a+ilerisar;yaz++)
    {printf("%s",tumMetin[yaz]);}
    }
    }
    }
    }

    }
    }
    return kontrol2;
    }

    //==============================================================================================================







  • yaa koca forumda yokmu bar üstad bundan anlayan???
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.