Dosyada aranan anahtarların bulunduğu satırları kopyalayan program // C

Başlatan sem, 08 Şubat 2011 - 17:29:13

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sem

Aşağıdaki bağlantıdaki istenen program ın C ile kodlanmış halidir.

http://forum.ubuntu-tr.net/index.php/topic,25342.msg303508.html#msg303508


Programa bir kaynak dosya veriyorsunuz; daha sonra aranacak kelimeleri giriyorsunuz (max 30 karakter)... Kaynak dosyanın bulunduğu dizinde "kaynakdosyaismi_new_just_keys-char" isminde bir dosya oluşturuyor. Bu dosya da aradığınız karakter/kelimelerin bulunduğu satırlar yazılmış oluyor.

Örneğin programın kaynak kodu olan dosya.c programı için;

Alıntı Yapsem0900@debian:~/Desktop$ ./dosya
Kaynak dosyayı girin:dosya.c
Aranacak karakterler:#
sem0900@debian:~/Desktop$

Şeklinde hiç uyarı vermeden sonlanıyor. Daha sonra "dosya.c_new_just_keys-char" dosyasının içeriği;

Alıntı Yap#include <stdio.h>
#include <string.h>
#include <stdlib.h>

Kodlar;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void edit_lastchar(char *adress)
{
        int k = strlen(adress);
        adress[k - 1] = '\0';
}


void search_and_get(char *source_file_path, char *keys)
{
   FILE *dest, *source;
   char *dest_file_path, *read_string;

   dest_file_path = (char *)calloc(350, sizeof(char));
   if(dest_file_path == NULL)   {
       fprintf(stdout, "Hedef dosya ismi için yer ayrılamadı\n");
       perror("calloc");
       exit(EXIT_FAILURE);
   }
   sprintf(dest_file_path, "%s_new_just_keys-char", source_file_path);

   if((source = fopen(source_file_path, "r")) == NULL){
      fprintf(stdout, "Kaynak dosya açılırken bir hata oluştu\n");
      perror("fopen");
      exit(EXIT_FAILURE);
   }

   if((dest = fopen(dest_file_path, "w")) == NULL){
      fprintf(stdout, "Hedef dosya açılırken bir hata oluştu\n");
      perror("fopen");
      exit(EXIT_FAILURE);
   }

   read_string = (char *)calloc(1000, sizeof(char));
   if(read_string == NULL){
      fprintf(stdout, "Okunacak dizi için yer ayrılamadı\n");
      perror("calloc");
      exit(EXIT_FAILURE);
   }

   for(;!feof(source);){
      fgets(read_string, 1000, source);
      edit_lastchar(read_string);
      if((strstr(read_string, keys)))
          fprintf(dest, "%s\n", read_string);
   }

   fclose(dest);
   fclose(source);
   free(dest_file_path);

}

int main()
{
   char *source_file_path, *keys;

   source_file_path = (char *)calloc(300, sizeof(char));
   if(source_file_path == NULL){
      fprintf(stdout, "Dosya yolu için yer ayrılamadı\n");
      perror("malloc");
      exit(EXIT_FAILURE);
   }

   fprintf(stdout, "Kaynak dosyayı girin:");
   fgets(source_file_path, 300, stdin);
   edit_lastchar(source_file_path);

   keys = (char *)calloc(30, sizeof(char));
   if(source_file_path == NULL){
      fprintf(stdout, "Anahtarar için yer ayrılamadı\n");
      perror("calloc");
      exit(EXIT_FAILURE);
   }

   fprintf(stdout, "Aranacak karakterler:");
   fgets(keys, 30, stdin);
   edit_lastchar(keys);

   search_and_get(source_file_path, keys);
   free(keys);
   free(source_file_path);

return 0;
}
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Coder

Hocam ellerinize sağlık fakat ben bunu açamadım ya  :)

Derlenmiş halini verseniz, ya da bas çalıştır filan :)

Kusura bakmayın yoruyorum sizi biraz ama  :-[

///// Tamam hallettim, ellerinize, yüreğinize, klavyenize sağlık.  :)

sem

Yazmıştım mesajı sonra sildim en sonda halletiğinizi söylemişsiniz.

Teşekkür ederim... Umarım yardımı olur...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

FıratikUS

@semetey ellerinize sağlık.
Bir şey sormak istiyorum; diyelim ki bir Türkçe sözlük de (veri tabanımı deniliyor bilmiyorum) istediğimiz harf öbekleri ile başlayan yada biten kelimeleri sorgulaya biliyormuyuz.

Cahilliğimi bağışlayın programcılık hakkında hiç bir şey bilmiyorum.
"Yok boşluktan başka bir şey toz nereye konacak"

sem

Teşekkür ederim Fırat.

Program aslında kelime bazında aramıyor istek o yönde olmadığı için. Bütünü ile satırı okuyor ve aranılan öbeği bulmaya çalışıyor. Sözlük veri tabanı bir metin dosyası ise ve şu şekilde ise;

yadigâr = Bir kimseyi, bir olayı hatırlatan nesne veya kişi, andaç
fobi =  Belirli nesneler veya durumlar karşısında duyulan olağan dışı güçlü korku, yılgı.


Sözlüğümüz bu şekilde oluşturulmuş bir metin dosyası ise; diyelim ki sözlük içerisinde aradığımız öbek "an" olsun; bu iki satır da bütünü ile yeni oluşturulan dosya içerisine yazılacaktır.

yadigâr içerisindeki hatırlat"an"
fobi içerisindeki duyul"an"

kelimeleri, kendilerini içeren satırları "aranan satırlar" arasına sokacaktır. Program bu mantık ile çalışıyor.

Programlama hakkında bilginiz olmadığı doğrudur. Buna cahillik demeyelim. İşiniz yoktur programlama ile diyelim... Sevgili ve saygın heartsmagic ile aramdaki şu diyalogtan alıntı yapayım =) Nostalji olsun;

Alıntı yapılan: sem0900Merhabalar heartsmagic, aslında dediklerin çok yabancı bana. Yazdıklarını okuduktan sonra cehaletin son perdesini okudum gözümde.
Alıntı yapılan: heartsmagicEstağfurullah ne cehaleti. Böyle düşünecek olursak buradaki herkes bir başka şeyin cahili olur 

ilgili başlık:     http://forum.ubuntu-tr.net/index.php/topic,18047.0.html
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

FıratikUS

Aranızda geçen diyaloğu okuduk dan sonra içimde ki son kalan programlama ateşi de sönmüş bulunuyor. Çok acayip feci zor bir lugat ...
"Yok boşluktan başka bir şey toz nereye konacak"