at 10:00 PM

Kamus on Terminal ( C Version )


Sebelumnya setelah membuat program kamus, ada opsi yang akan ditambahkan yaitu opsi -a (untuk penambahan text ke dalam file dictionary). Namun tiba-tiba terlintas di pikiran W jika program ini W tambahin terus menerus kata-kata ke dalam file dictionary nya, besar kemungkinan akan membuat program di execute lebih lama karena besarnya file dictionary.
Masalah ini W tanya di forum-forum, gimana cara menyelesaikan masalah seperti ini, setelah begitu banyak solusi, yang paling banyak ngasih bantuan bilangnya gini “write in C”.
Yah mungkin W harus coba untuk menulis program ini ke dalam bahasa C, dan ini dia kode yang W tulis dengan bahasa C.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
void helpMe() {
printf("simple gkamus v0.1
Program ini menggunakan file \"gkamus-{en,id}.dict\" sebagai wordlist.
Program ini tidak berhubungan dengan program gkamus,
kecuali penggunaan kamus bawaan dari program gkamus.
Lisensi \"gkamus-{en,id}.dict\", lihat file.
Licensed (proudly) under GPL.
 
Option:
 -i 'text'\t translate 'text' ke bahasa Indonesia (default).
 -e 'text'\t translate 'text' ke bahasa Indonesia.
 -a 'to:text:def'\t tambahkan 'text' ke dalam kamus, dengan 'def' sebagai penjelasan.
     ex: gk -a 'e:mv:move file'
         gk -a 'i:asik:fun'
-
--------------
ambo:\n");
  exit(0);
}
int main(int argc , char *argv[])
{
  FILE *bFile;
  int bfSize=1024;
  char kamus[256]="/usr/share/gkamus/";
  char file[]="gkamus-en.dict";
  char find[100];
  char *line;
  char *thatis;
 
  if(argc==2) {
    strcpy(find, argv[1]);
  }
  else if(argc==3) {
    if(strcmp(argv[1],"-e")==0){
      strcpy(find, argv[2]);
    }
    else if(strcmp(argv[1], "-i")==0){
      strcpy(file, "gkamus-id.dict");
      strcpy(find, argv[2]);
    }
  }
  else{
    helpMe();
  }
 
  strcat (kamus, file);
  bFile=fopen(kamus, "r");
  line = (char*) malloc (sizeof (char) * bfSize);
  if(line==NULL){
    perror("memori error");
    exit(2);
  }
  if(!bFile) { perror("Error");}
  else{
    while(!feof(bFile)){
      fgets(line, bfSize, bFile);
      thatis=strtok(line,"\t");
      if(strcmp(thatis,find)==0){
       printf("%s", strtok(NULL,"\t"));
       exit(0);
      }
    }
    fclose(bFile);
  }
  free(line);
 
}


Program ini ditulis dengan standar librari jadi bisa digunakan di platform manapun.

Tulis Komentar dengan akun Facebook Anda.

0 comments:

Post a Comment