etil alkol rp satın al
chat eczaonline.com >

C dilinde txt dosya içerisinden kelime/cümle aramak-değiştirmek [yardım]

ruen

Müptela
Katılım
4 Mar 2006
Mesajlar
2,019
Beğeniler
1
Konum
Kocaeli UNI
#1
C dilinde aşağıdaki işlemi yapmak istiyorum.Eğer yardımcı olabilirseniz çok sevinirim.Kimseden bu programı yazmasını istemiyorum,bana bunu yapmak için yeterli kaynak,yönlendirme veya kullanacağım komut bilgilendirmesi yapabilirseniz berhudar olurum :)

Yapmak istediğim şu şekilde.


Örneğin C:/iyinet/

klasörü içerisinde 10 tane text dosyası olsun ve bu text dosyalarının içerisinde paragraflar olsun.
a.txt
b.txt
..
..
x.txt gibi.

Program, aranılan kelimeyi/kelimeleri bu klasör içerisindeki tüm text dosyaları içerisinde bulduracak.
Örneğin "web master" kelimesini arattığımda çıktı olarak önceki 2 ve sonraki 2 kelimeyle beraber yazacak.

Bulunduğu dosya - Cümle
a.txt : iyi net web master ana sayfa
c.txt : hebele hübele web master ayşe fatma
..
.

Ayrıca 2. olarakta aranan kelime,istenilen kelime ile değiştirilecek.Eğer değiştirme işlemi yapılmak isteniyorsa,2 parametre istenecek kullanıcıdan.
1. parametre - aranan kelime(ler)
2. parametre - değiştirilecek kelime(ler)
şeklinde.
Ve bu klasör içerisindeki text dosyalarındaki tüm aranan kelimeler,yeni kelimeyle değiştirilecek.

Teşekkürler.
 
Katılım
21 May 2010
Mesajlar
1,462
Beğeniler
24
Yaş
32
Konum
Maraşlıyık edem
#2
kardeş,http://www.bilgisayarkavramlari.com/2008/10/22/c-ile-dosya-islemleri/ burayı bir gözden geçir ufak çaplı denemeler yap,eğer tam olarak istediklerini karşılamıyorsa google da "c dosya işlemleri" gibi bir aramayla baya bir dökümana ulaşabilirsin.okuldayken bu şekilde c++ ile basit bir HTML Editör yazmıştım.Okul bitince c programlarını pc'den ve bilgilerimi zihnimden sildim :)
Yine de yardımcı olabileceğim bir konu olursa haber verirsen yardımcı olmaya çalışırım
 

ruen

Müptela
Katılım
4 Mar 2006
Mesajlar
2,019
Beğeniler
1
Konum
Kocaeli UNI
#3
Teşekkürler ama bunları biliyorum zaten,yetersiz kalıyor.

Herhangi bir text dosyası içinde arama yapmak değil istediğim,bir klasör içerisindeki tüm text dosyalarında arama yapmak ve değiştirme yapmak.Klasör içinde başka klasörde olabilir,onun içindeki textleride almam gerekebilir.

Bana bir döngü içerisinde belirtilen dizindeki tüm text dosyalarını hafızaya alan kod lazım.Ben yaptım onu ama dizin içerisinde bi klasör daha olursa olmuyor,hepsi txt olması lazım :S
 
T
#4
Deitel&deitel how to c kitabında buna benzer bir örnek vardı. Tam hatırlayamadım şimdi sayfasını ama elinde varsa bir araştırmanı öneririm.
 
Katılım
21 May 2010
Mesajlar
1,462
Beğeniler
24
Yaş
32
Konum
Maraşlıyık edem
#5
Teşekkürler ama bunları biliyorum zaten,yetersiz kalıyor.

Herhangi bir text dosyası içinde arama yapmak değil istediğim,bir klasör içerisindeki tüm text dosyalarında arama yapmak ve değiştirme yapmak.Klasör içinde başka klasörde olabilir,onun içindeki textleride almam gerekebilir.

Bana bir döngü içerisinde belirtilen dizindeki tüm text dosyalarını hafızaya alan kod lazım.Ben yaptım onu ama dizin içerisinde bi klasör daha olursa olmuyor,hepsi txt olması lazım :S
Ali Çehreli şöyle bir örnek yazmış,belki bir fikir verebilir

PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct 
{
    char * ad;
    int yas;
}
Insan;

Insan cocuklar[] =
{ 
    { "Ali", 3 },
    { "Veli", 2 },
    { "Ayse", 1 }
};

#define NESNE_ADEDI(x) (sizeof(x) / sizeof(*(x)))

int Insan_ad_karsilastiran(const void * b, const void * i)
{
    /* Once gercek turlerine donusturelim */
    const Insan * birinci = b;
    const Insan * ikinci = i;
    
    return strcmp(birinci->ad, ikinci->ad);
}

int Insan_yas_karsilastiran(const void * b, const void * i)
{
    /* Once gercek turlerine donusturelim */
    const Insan * birinci = b;
    const Insan * ikinci = i;

    if      (birinci->yas <  ikinci->yas) return -1;
    else if (birinci->yas == ikinci->yas) return  0;
    else                                  return  1;
}

void Insan_yazdir(const Insan * insan)
{
    printf("%s (%d)\n", insan->ad, insan->yas);
}

void Insanlar_yazdir(const Insan * insanlar, int adet)
{
    int i = 0;
    for (i = 0; i != adet; ++i)
    {
        Insan_yazdir(&insanlar[i]);
    }
}

int main()
{
    printf("Simdi isim sirasindalar:\n");

    qsort(cocuklar,
          NESNE_ADEDI(cocuklar), sizeof(Insan),
          Insan_ad_karsilastiran);

    Insanlar_yazdir(cocuklar, NESNE_ADEDI(cocuklar));

    printf("\nSimdi yas sirasindalar:\n");

    qsort(cocuklar,
          NESNE_ADEDI(cocuklar), sizeof(Insan),
          Insan_yas_karsilastiran);

    Insanlar_yazdir(cocuklar, NESNE_ADEDI(cocuklar));

    return EXIT_SUCCESS;
}
 

ruen

Müptela
Katılım
4 Mar 2006
Mesajlar
2,019
Beğeniler
1
Konum
Kocaeli UNI
#6
Deitel&deitel how to c kitabında buna benzer bir örnek vardı. Tam hatırlayamadım şimdi sayfasını ama elinde varsa bir araştırmanı öneririm.
Kocaelide bulamadım hiç bi yerde,sipariş edecek vaktimde kalmadı.İnternetten e-book'una bakacağım artık,teşekkürler.

Ali Çehreli şöyle bir örnek yazmış,belki bir fikir verebilir

PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct 
{
    char * ad;
    int yas;
}
Insan;

Insan cocuklar[] =
{ 
    { "Ali", 3 },
    { "Veli", 2 },
    { "Ayse", 1 }
};

#define NESNE_ADEDI(x) (sizeof(x) / sizeof(*(x)))

int Insan_ad_karsilastiran(const void * b, const void * i)
{
    /* Once gercek turlerine donusturelim */
    const Insan * birinci = b;
    const Insan * ikinci = i;
    
    return strcmp(birinci->ad, ikinci->ad);
}

int Insan_yas_karsilastiran(const void * b, const void * i)
{
    /* Once gercek turlerine donusturelim */
    const Insan * birinci = b;
    const Insan * ikinci = i;

    if      (birinci->yas <  ikinci->yas) return -1;
    else if (birinci->yas == ikinci->yas) return  0;
    else                                  return  1;
}

void Insan_yazdir(const Insan * insan)
{
    printf("%s (%d)\n", insan->ad, insan->yas);
}

void Insanlar_yazdir(const Insan * insanlar, int adet)
{
    int i = 0;
    for (i = 0; i != adet; ++i)
    {
        Insan_yazdir(&insanlar[i]);
    }
}

int main()
{
    printf("Simdi isim sirasindalar:\n");

    qsort(cocuklar,
          NESNE_ADEDI(cocuklar), sizeof(Insan),
          Insan_ad_karsilastiran);

    Insanlar_yazdir(cocuklar, NESNE_ADEDI(cocuklar));

    printf("\nSimdi yas sirasindalar:\n");

    qsort(cocuklar,
          NESNE_ADEDI(cocuklar), sizeof(Insan),
          Insan_yas_karsilastiran);

    Insanlar_yazdir(cocuklar, NESNE_ADEDI(cocuklar));

    return EXIT_SUCCESS;
}

Teşekkür ederim yardımlarınız için tekrar ama bu çok farklı bir örnek,bunu yapmakta sorun yok zaten.İçeriğini bilmediğiniz 10larca dosyada arama,bulunan kelimeyle önceki ve sonraki 2 şer kelimeyi yazma,aranan kelimeyi istenilen kelimeyle değiştirme işlemleri yapmamız gerekiyor.Bu örnek çok farklı.
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 1)

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur. iyinet.com sayfalarında yer alan yazı, görsel ve linklerle ilgili hukuki şikayetleriniz için Buradan iletişime geçmeniz durumunda, ilgili kanunlar ve yönetmelikler çerçevesinde en geç 7 gün içerisinde iyinet yönetimince tarafınıza dönüş sağlanacaktır. Betcup Artemisbet Forum canlı bahis sohbet - - chat
Üst