Home :: International :: Manuals :: Howto :: FAQ :: Man Pages :: Email Login

 
 

 

HSEARCH

Section: Linux Programmer's Manual (3)
Updated: September 30, 1995
Index Return to Main Contents
 

̾Á°

hcreate, hdestroy, hsearch - ¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î´ÉÍý  

½ñ¼°

#include <search.h>

ENTRY *hsearch(ENTRY item, ACTION action);

int hcreate(unsigned nel);

void hdestroy(void);
 

ÀâÌÀ

¤³¤ì¤é£³¤Ä¤Î´Ø¿ô¤òÍøÍѤ¹¤ë¤È¡¢¥æ¡¼¥¶¤Ï¥­¡¼¤ÈǤ°Õ¤Î¥Ç¡¼¥¿¤ò´ØÏ¢¤Å¤±¤ë¥Ï¥Ã ¥·¥å¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

ºÇ½é¤Ë¡¢´Ø¿ô hcreate() ¤Ë¤è¤Ã¤Æ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ nel ¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¥¨¥ó¥È¥ê¡¼¿ô¤ÎͽÁÛ¤µ¤ì¤ëÃͤǤ¢¤ë¡£ hcreate() ¤Ï¡¢ºîÀ®¤µ¤ì¤ë¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤ÎÀ­Ç½¤ò¸þ¾å¤µ¤»¤ë¤¿¤á¤Ë ¤³¤ÎÃͤòÁý¤ä¤¹¾ì¹ç¤â¤¢¤ë¡£GNU¤Î¼ÂÁõ¤Ç¤Ï¡¢ ¥Æ¡¼¥Ö¥ë¤¬¤Û¤È¤ó¤É°ìÇդˤʤà ¤¿¾ì¹ç¡¢hsearch() ¤Ë¤è¤Ã¤Æ¤â¥Æ¡¼¥Ö¥ë¤¬³ÈÄ¥¤µ¤ì¤ë¡£¥Æ¡¼¥Ö¥ë¤Î¤¿¤á ¤ÎÎΰè¤ò³ä¤êÅö¤Æ¤ë¤¿¤á¤Ë ,BR malloc (3) ¤¬ÍѤ¤¤é¤ì¤ë¡£

¤³¤ì¤ËÂбþ¤¹¤ë hdestroy() ´Ø¿ô¤Ï¡¢¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Ë¤è¤Ã¤ÆÀêÍ­¤µ ¤ì¤Æ¤¤¤¿¥á¥â¥ê¤ò³«Êü¤·¡¢¿·¤·¤¤¥Æ¡¼¥Ö¥ë¤òºîÀ®¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£

item ¤Ï ENTRY ·¿¤Ç¤¢¤ê¡¢¤³¤ì¤Ï <search.h> ¤ÎÃæ¤Ç typedef¤µ¤ì¤Æ¤ª¤ê¡¢¼¡¤ÎÍ×ÁǤò´Þ¤ó¤Ç¤¤¤ë:

        typedef struct entry 
          { 
            char *key;
            char *data; 
          } ENTRY;

key ¤Ï¡¢¥µ¡¼¥Á¥­¡¼¤È¤Ê¤ë0¤Ç½ªÃ¼¤µ¤ì¤¿ASCIIʸ»úÎó¤ò»Ø¤¹¡£ data ¤Ï¡¢¤³¤Î¥­¡¼¤ËÂбþ¤¹¤ë¥Ç¡¼¥¿¤ò»Ø¤¹¡£(ʸ»ú·¿(char)°Ê³°¤Î·¿¤Ø ¤Î¥Ý¥¤¥ó¥¿¤Ï¡¢Ê¸»ú·¿¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ë¥­¥ã¥¹¥È¤¹¤Ù¤­¤Ç¤¢¤ë) hsearch() ¤Ï¡¢item ¤ÈƱ¤¸¥­¡¼¤ò»ý¤Ä¹àÌܤò¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë ¤ÎÃæ¤«¤éõ¤·¡¢À®¸ù¤¹¤ì¤Ð¤½¤Î¹àÌܤؤΥݥ¤¥ó¥¿¤òÊÖ¤¹¡£Ãµº÷¤¬¼ºÇÔ¤·¤¿¾ì¹ç¡¢ action ¤Ë¤è¤Ã¤Æ hsearch() ¤Îưºî¤¬·è¤Þ¤ë¡£ÃÍ ENTER ¤Ï¿·¤·¤¤¹àÌܤòÁÞÆþ¤·¡¢ÃÍ FIND ¤Ï NULL ¤òÊÖ¤¹¤³¤È¤ò°ÕÌ£¤¹¤ë¡£

 

ÊÖ¤êÃÍ

hcreate() ¤Ï¡¢¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤¬¤¦¤Þ¤¯ºîÀ®¤Ç¤­¤Ê¤¤¾ì¹ç NULL ¤òÊÖ¤¹¡£

hsearch() ¤Ï¡¢action ¤¬ ENTER ¤Ç¤·¤«¤â¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö ¥ë¤ò³ÈÄ¥¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢¤Þ¤¿¤Ï action ¤¬ FIND ¤Ç¤·¤«¤â item ¤¬¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ëÆâ¤Ë¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç NULL ¤òÊÖ¤¹¡£  

½àµò

SysV¤Ë¤ª¤¤¤Æ¤Ï¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Ï³ÈÄ¥¤Ç¤­¤Ê¤¤¤³¤È¤ò½ü¤­¡¢SVID½àµò¡£

 

¥Ð¥°

¤³¤Î¥¤¥ó¥×¥ê¥á¥ó¥Æ¡¼¥·¥ç¥ó¤Ç¤Ï¡¢°ì»þ¤Ë°ì¤Ä¤Î¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤·¤«´ÉÍý¤Ç ¤­¤Ê¤¤¡£ ¸Ä¡¹¤Î¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¥¨¥ó¥È¥ê¡¼¤òÄɲäǤ­¤ë¤¬¡¢ºï½ü¤Ç¤­¤Ê¤¤¡£

 

Îã

¼¡¤Î¥×¥í¥°¥é¥à¤Ï¡¢¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Ë24¸Ä¤Î¹àÌܤòÁÞÆþ¤·¡¢¤½¤ì¤«¤é¤½¤Î¤¦ ¤Á¤Î¤¤¤¯¤Ä¤«¤òɽ¼¨¤¹¤ë¡£


    #include <stdio.h>
    #include <search.h>

    char *data[]={ "alpha", "bravo", "charlie", "delta",
         "echo", "foxtrot", "golf", "hotel", "india", "juliet",
         "kilo", "lima", "mike", "november", "oscar", "papa",
         "quebec", "romeo", "sierra", "tango", "uniform",
         "victor", "whisky", "x-ray", "yankee", "zulu" 
    };

    int main()
    {
      ENTRY e, *ep;
      int i;
    
      /* start with small table, and let it grow */
      hcreate(3);
      for (i = 0; i < 24; i++)
        {
          e.key = data[i]; 
          /* data is just an integer, instead of a pointer 
             to something */
          e.data = (char *)i;
          ep = hsearch(e, ENTER);
          /* there should be no failures */
          if(ep == NULL) {fprintf(stderr, "entry failed\n"); exit(1);}
        }
      for (i = 22; i < 26; i++)
        /* print two entries from the table, and show that 
           two are not in the table */
        {
          e.key = data[i];
          ep = hsearch(e, FIND);
          printf("%9.9s -> %9.9s:%d\n", e.key, ep?ep->key:"NULL", 
                 ep?(int)(ep->data):0);
        }
      return 0;
    }

 

´ØÏ¢¹àÌÜ

bsearch(3), lsearch(3), tsearch(3), malloc(3)


 

Index

̾Á°
½ñ¼°
ÀâÌÀ
ÊÖ¤êÃÍ
½àµò
¥Ð¥°
Îã
´ØÏ¢¹àÌÜ

 
 
 
 
Google
  Web Linuxinfor   
 

Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account

Document on this page is part of "Linuxinfor Man Pages in HTML Format: man3". See Index Page for more info about Authorship and Copyright.

1999-2006 Linuxinfor.com. No rights reserved.