C¸À¸ì´Ø·¸·Ç¼¨ÈÄ

²áµî¥í¥°

No£·£±£·¡¡²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ

[Ìá¤ë]¡¡[¥Û¡¼¥à¥Ú¡¼¥¸]
No.8655

²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¥¹¥é¥¤¥à(2003/07/26 18:17:57)


²áµî¥í¥°No£±£³£²
http://f1.aaa.livedoor.jp/~pointc/log132.html
¤ÎÃæ¤Ë½ñ¤¤¤Æ¤¢¤ë²¼µ­¤Î¥½¡¼¥¹¤Ç°ÕÌ£¤¬Íý²ò¤Ç¤­¤Ê¤¤ÅÀ¤¬¤¢¤ë¤Î¤Ç
¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£


#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define     SEPARATOR   " .,\t\r\n"

typedef int     (*COMP )(const void *,const void *);

typedef struct  {
    char    *pWord;
    int     Count;
} WORDINFO,*PWORDINFO;

/* ¤È¤ê¤¢¤¨¤ºÃ±¸ì¼ïÎà¤ò200¤È¤¹¤ë */
WORDINFO        WordTbl[200];

int     Compare(PWORDINFO ,PWORDINFO );

void main(void )
{
    PWORDINFO   pSearch,pTbl;
    char        *pText,*tk;
    size_t      uSize;
    size_t      TblLen;
    FILE        *fp;

/*** phase 1 ¥Æ¥­¥¹¥È¤ò¥á¥â¥ê¤Ë¥í¡¼¥É ***/
    fp = fopen("Test.txt","r");
    if (!fp)    return;

    uSize = (size_t )filelength(fileno(fp));
    pText = (char *)calloc(uSize + 1,sizeof(char ));
    if (!pText){
        fclose(fp);
        return;
    }
    fread(pText,uSize,1,fp);
    fclose(fp);

/*** phase 2 ñ¸ì¤Î°ÌÃÖ¤ò¥Æ¡¼¥Ö¥ë¤Ë³ÊǼ¤¹¤ë ***/
    tk = strtok(pText,SEPARATOR);
    while(tk){
        pSearch = WordTbl;
        while(pSearch->pWord){
            if (!strcmp(pSearch->pWord,tk))
                break;
            pSearch++;
        }
        pSearch->pWord = tk;
        pSearch->Count++;

        tk = strtok(NULL,SEPARATOR);
    }

/*** phase 3 ¥½¡¼¥È ***/
    pTbl = WordTbl; while((pTbl++)->pWord);
    TblLen = pTbl - WordTbl - 1;

    qsort(WordTbl,TblLen,sizeof(WORDINFO ),(COMP )Compare);

    pTbl = WordTbl;
    while(pTbl->pWord){
        printf("%s  .....  %d\n",pTbl->pWord,pTbl->Count);
        pTbl++;
    }

    /* ÎΰèpText¤ÏºÇ¸å¤Þ¤Ç²òÊü¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤ */
    free(pText);
}

int     Compare(PWORDINFO ptr1,PWORDINFO ptr2)
{
    return strcmp(ptr1->pWord,ptr2->pWord);
}



¤³¤Î¥½¡¼¥¹¤ÎÃæ¤Î²¼µ­¤Î°ÕÌ£¤¬Íý²ò¤Ç¤­¤Ê¤¤¤Î¤Ç¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£
¤ª´ê¤¤¤·¤Þ¤¹¡£
­¡typedef int (*COMP )(const void *,const void *);
­¢} WORDINFO,*PWORDINFO;PWORDINFO pSearch,pTbl;
char *pText,*tk;
size_t uSize;
size_t TblLen;
­¤uSize = (size_t )filelength(fileno(fp));







No.8656

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---YuO(2003/07/26 19:10:54)


>(1) typedef int (*COMP )(const void *,const void *);

¡Ø¡Öconst void *·¿¤Î°ú¿ô¤òÆó¤Ä¤È¤êint¤òÊÖ¤¹´Ø¿ô¡×¤Ø¤Î¥Ý¥¤¥ó¥¿¡Ù¤È¤¤¤¦·¿¤Ë¡¤
COMP¤È¤¤¤¦Ì¾Á°¤òÉÕ¤±¤Æ¤¤¤Þ¤¹¡£


>(2) } WORDINFO,*PWORDINFO;PWORDINFO pSearch,pTbl;
> char *pText,*tk;
> size_t uSize;
> size_t TblLen;

typedef struct { /* ... */ } WORDINFO, * PWORDINFO;
¤Ë¤Ä¤¤¤Æ¡£¤³¤ì¤Ï¡¤
struct tagWordInfo { /* ... */ };
typedef struct tagWordInfo WORDINFO;
typedef struct tagWordInfo * PWORDINFO;
¤ÈƱ¤¸¤³¤È¤Ç¡¤
¡¦¤³¤Î¹½Â¤Âη¿¤Ë¡¤WORDINFO¤ò¤¤¤¦Ì¾Á°¤òÉÕ¤±¤ë
¡¦¤³¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿·¿¤Ë¡¤PWORDINFO¤È¤¤¤¦Ì¾Á°¤òÉÕ¤±¤ë
¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

»Ä¤ê¤Ï¡¤ÉáÄ̤ÎÀë¸À¤Ç¤¹¡£


>(4) uSize = (size_t )filelength(fileno(fp));

¤³¤ì¤Ï²¿¤¬¤ï¤«¤é¤Ê¤«¤Ã¤¿¤Î¤Ç¤·¤ç¤¦¡£
´Ø¿ô¸Æ¤Ó½Ð¤·¤Æ¡¤Ìá¤êÃͤòsize_t·¿¤Ë¥­¥ã¥¹¥È¤·¤Æ¤¤¤Þ¤¹¡£


No.8659

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¥¹¥é¥¤¥à(2003/07/26 23:32:52)


Á᮲óÅú¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£

size_t uSize;
size_t TblLen;
¤Ë´Ø¤·¤Æ¤Ï¡¢size_t ¤È¤¤¤¦¤Î¤Ï¤É¤¦¤¤¤Ã¤¿·¿¤Ê¤Î¤«¤ï¤«¤é¤Ê¤¤¤Î¤Ç
¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£

filelength¤Î°ÕÌ£¤âÄ´¤Ù¤¿¤Î¤Ç¤¹¤¬¡¢»²¹Í½ñ¤Ê¤É¤ËºÜ¤Ã¤Æ¤¤¤Ê¤¯¤Æ
¤è¤¯¤ï¤«¤é¤Ê¤¤¤ó¤Ç¤¹¤¬¡¢¤³¤ì¤Ë¤Ä¤¤¤Æ¤â¤ª´ê¤¤¤·¤Þ¤¹¡£
filelength¤ÏUNIX¤Ç¤Ï»È¤¨¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©


No.8660

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---YuO(2003/07/27 00:32:25)


> size_t uSize;
> size_t TblLen;
>¤Ë´Ø¤·¤Æ¤Ï¡¢size_t ¤È¤¤¤¦¤Î¤Ï¤É¤¦¤¤¤Ã¤¿·¿¤Ê¤Î¤«¤ï¤«¤é¤Ê¤¤¤Î¤Ç
>¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£

sizeof±é»»»Ò¤Î·ë²Ì¤ÎÉä¹æÌµ¤·À°¿ô·¿¡¤¤ÈÄê¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£
stddef.h¤ò¸«¤ì¤ÐºÜ¤Ã¤Æ¤¤¤ë¤È¤ª¤â¤¤¤Þ¤¹¤¬¡¤
ÂçÄñ¤Î´Ä¶­¤Ç¤Ïunsigned int¤Îtypedef¤À¤È»×¤¤¤Þ¤¹¡£


>filelength¤Î°ÕÌ£¤âÄ´¤Ù¤¿¤Î¤Ç¤¹¤¬¡¢»²¹Í½ñ¤Ê¤É¤ËºÜ¤Ã¤Æ¤¤¤Ê¤¯¤Æ
>¤è¤¯¤ï¤«¤é¤Ê¤¤¤ó¤Ç¤¹¤¬¡¢¤³¤ì¤Ë¤Ä¤¤¤Æ¤â¤ª´ê¤¤¤·¤Þ¤¹¡£
>filelength¤ÏUNIX¤Ç¤Ï»È¤¨¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©

¸µ¡¹¡¤filelength¼«ÂΤ¬Èóɸ½à¤Î(VC++¤Î)´Ø¿ô¤Ç¤¹¡£
No.829 "Re:ʸ»úÎó¤Ë¤Ä¤¤¤Æ" (kikk¤µ¤ó)
¤Îµ­»ö¤ò¤è¤¯ÆÉ¤ó¤Ç¤ß¤Þ¤·¤ç¤¦¡£

No.8661

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¥¹¥é¥¤¥à(2003/07/27 02:21:13)


>¸µ¡¹¡¤filelength¼«ÂΤ¬Èóɸ½à¤Î(VC++¤Î)´Ø¿ô¤Ç¤¹¡£
>No.829 "Re:ʸ»úÎó¤Ë¤Ä¤¤¤Æ" (kikk¤µ¤ó)
>¤Îµ­»ö¤ò¤è¤¯ÆÉ¤ó¤Ç¤ß¤Þ¤·¤ç¤¦

ÆÉ¤ó¤Ç¤ß¤¿¤Î¤Ç¤¹¤¬¡¢½é¿´¼Ô¤Î»ä¤Ë¤Ï¡¢Ã桹Íý²ò¤·¤¬¤¿¤¯
C++¤Î¥½¡¼¥¹¤ò¼«Ê¬¤Ê¤ê¤Ë¡¢C¤Î¥×¥í¥°¥é¥à¤Ç¹Í¤¨¤Æ¤ß¤¿¤ó¤Ç¤¹¤¬¡¢

fileno()¤Èfilelength()¤Èstrcmpi()¤ÎÂå¤ï¤ê¤Ë¤Ê¤ëC¤Î´Ø¿ô¤¬¤ï¤«¤é¤Ê¤¯¡¢stat()¡¢fstat()¤Ë¤Ä¤¤¤Æ¤â¿§¡¹Ãµ¤·¤Æ¤ß¤¿¤Î¤Ç¤¹¤¬¡¢»²¹Í½ñ¤¬½é¿´¼ÔÍѤʤΤǺܤäƤª¤é¤º¤ï¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£

Âå¤ï¤ê¤Ë¤Ê¤ëC¤Î´Ø¿ô¤¬¤ï¤«¤é¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢fileno()¤Èfilelength()¤Èstrcmpi()¤ò»ÈÍѤ·¤Æ¡¢£ã¤Î¥×¥í¥°¥é¥à¤ò¹Í¤¨¤Æ¸«¤¿¤Î¤Ç¤¹¤¬¡¢¼ÂºÝ¤Ë¡¢C¤Î¥×¥í¥°¥é¥à¤Ç¤³¤Î¥×¥í¥°¥é¥à¤òư¤«¤¹¤Ë¤Ï¤É¤Î¤è¤¦¤Ê´Ø¿ô¤ò»È¤¨¤Ðư¤«¤¹¤³¤È¤¬½ÐÍè¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£

¤è¤í¤·¤±¤ì¤Ð¡¢¤³¤Î¥×¥í¥°¥é¥à¤ò½¤Àµ¤·¤Æ¡¢¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£


#include <stdio.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define     SEPARATOR   " .,!?\t\r\n"

typedef int
{
     (*COMP )(const void *,const void *);a
};

typedef struct
{
    char    *pWord;
    int     Count;
} WORDINFO,*PWORDINFO;

int     WordSearch(char *FileName);

void main(void )
{
    WordSearch(char *);
}

/***************************************************
		WORDËè¤ËÀÚ¤ê½Ð¤¹´Ø¿ô

¤³¤Î´Ø¿ô¤Î°ú¿ô¤Ë¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤¬³«¤±¤Ê¤«¤Ã¤¿¤ê¡¢
¥á¥â¥ê¤¬³ÎÊݤǤ­¤Ê¤¤¾ì¹ç¤Ï0¤òÊÖ¤·¡¢À®¸ù¤¹¤ì¤Ð1¤òÊÖ¤·¤Þ¤¹¡£
******************************************************/
/* ¤È¤ê¤¢¤¨¤ºÃ±¸ì¼ïÎà¤ò300¤È¤¹¤ë */
WORDINFO        WordTbl[300];

int     Compare(PWORDINFO ,PWORDINFO );

int     WordSearch(char *FileName)
{
    PWORDINFO   pSearch,pTbl;
    char        *pText,*tk;
    size_t      uSize;
    size_t      TblLen;
    FILE        *fp;

/*** phase 1 ¥Æ¥­¥¹¥È¤ò¥á¥â¥ê¤Ë¥í¡¼¥É ***/
    fp = fopen(FileName,"r");
    if (!fp)
    {    
        return 0;
    }

    uSize = (size_t )filelength(fileno(fp));
    pText = (char *)calloc(uSize + 1,sizeof(char ));
    if (!pText)
    {
        fclose(fp);
        return 0;
    }
    fread(pText,uSize,1,fp);/*size_t·¿¤Î¥µ¥¤¥º*1¸Ä¤òpText¤ËÆÉ¤ß¹þ¤à*/
	
    fclose(fp);

/*** phase 2 ñ¸ì¤Î°ÌÃÖ¤ò¥Æ¡¼¥Ö¥ë¤Ë³ÊǼ¤¹¤ë ***/
	/    tk = strtok(pText,SEPARATOR);/*SEPARATOR¤Ë´Þ¤Þ¤ì¤ëʸ»ú¤ò¤ò\n¤È¤·¤ÆpText¤«¤éʸ»úÎó¤ò¼è¤ê½Ð¤¹¡£*/
    while(tk)
    {
	*tk = tolower(*tk); /* Ƭʸ»ú¤ò¾®Ê¸»ú¤ËÊÑ´¹ */

        pSearch = WordTbl;
        while(pSearch->pWord)
        {
            if (!strcmpi(pSearch->pWord,tk))
	    {
                break;
	    }
            pSearch++;
        }
        pSearch->pWord = tk;
        pSearch->Count++;

        tk = strtok(NULL,SEPARATOR);
    }

/*** phase 3 ¥½¡¼¥È ***/
    pTbl = WordTbl; while((pTbl++)->pWord);
    TblLen = pTbl - WordTbl - 1;

    qsort(WordTbl,TblLen,sizeof(WORDINFO ),(COMP )Compare);


    fp = fopen("Result.txt","w");
    if (!fp)
    {
        return 0;
    }
    pTbl = WordTbl;
    while(pTbl->pWord)
¡¡¡¡{
        printf("%s  .....  %d\n",pTbl->pWord,pTbl->Count);
        fprintf(fp,"%s  .....  %d\n",pTbl->pWord,pTbl->Count);

        pTbl++;
    }

	    fclose(fp);

    /* Îΰè²òÊü */
    free(pText);

    return 1;
}

int     Compare(PWORDINFO ptr1,PWORDINFO ptr2)
{
    return strcmpi(ptr1->pWord,ptr2->pWord);
}



No.8663

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¤«¤º¤Þ(2003/07/28 00:42:06)


¼ÁÌä¤ËÂФ¹¤ë²óÅú¤Ç¤Ê¤¯¤Æ¿½¤·Ìõ¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤½¤Î¥×¥í¥°¥é¥à¤ò¸«¤Æ¤¤¤ë¤È¡¢¥Õ¥¡
¥¤¥ë¤òÁ´ÉôÆÉ¤ß¹þ¤à¤È¤¤¤¦Îΰè¤Î̵Â̤ȡ¢calloc ¤Ç¤½¤ÎÎΰè¤ò³ÎÊݤ·¤Æ¤¤¤ë¤È¤¤¤¦
»þ´Ö¤Î̵Â̤¬µ¤¤Ë¤Ê¤Ã¤Æ¡¢Æ±¤¸¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¥×¥í¥°¥é¥à¤òÊ̤˽ñ¤¤¤Æ¤ß¤Þ¤·¤¿¡£
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
    struct Word { struct Word *next; char *word; int count; } list = {0}, *p, *w;
    char word[256], *s;  int n;  FILE *fp = stdin;

    for (; (n = fscanf(fp, " %255[a-zA-Z]", word)) != EOF; fscanf(fp, "%*[^a-zA-Z]")) {
        if (n == 0) continue;
        for (s = word; *s; s++) *s = tolower(*s & 0xFF);
        for (p = &list; p->next && (n = strcmp(p->next->word, word)) < 0; p = p->next)
            ;
        if (n == 0) { p->next->count++; continue; }
        if (!(w = malloc(sizeof *w)) || !(w->word = strdup(word)))
            return puts("out of memory"), 1;
        w->next = p->next,  p->next = w,  w->count = 1;
    }
    for (p = &list; p = p->next; ) printf("%5d %s\n", p->count, p->word);
    return 0;
}

fscanf ¤Î "%[" ¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢Â®¤¯¤Ï¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤Ç¤·¤ç¤¦¡£

No.8664

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¤¢¤«¤Þ(2003/07/28 01:43:15)


¤Á¤ç¤Ã¤È¥¹¥ì¥Ã¥É¤È¤Ï´Ø·¸¤Ê¤¤¤Î¤Ç¤¹¤¬¼ÁÌä¤Ç¤¹¡£

scanf¤Î"*"¤ò»È¤Ã¤¿ÆÉ¤ß¼Î¤Æ¤Ê¤Î¤Ç¤¹¤¬¡¢
"%*c"¤Ç°ìʸ»úÆÉ¤ß¼Î¤Æ¡¢
"%*s"¤Ç¼¡¤Ë¥¹¥Ú¡¼¥¹²þ¹Ô¤Ê¤É¤¬Íè¤ë¤Þ¤Ç¤Îʸ»úÎóÆÉ¤ß¼Î¤Æ¡¢
"%*[^a-zA-Z]"¤Ç"a-zA-Z"°Ê³°¤Îʸ»ú¤¬Â³¤¯¸Â¤ê0ʸ»ú°Ê¾åÆÉ¤ß¼Î¤Æ
¤Ç¤è¤¤¤Ç¤·¤ç¤¦¤«¡©

¤Ê¤Ë¤ä¤é¤³¤ÎÊÕ¤ÎÃ챤¬Û£Ëæ¤Çº¤¤Ã¤Æ¤Þ¤¹¡£
¤È¤ê¤¢¤¨¤º¡¢¾å¤ÎÃμ±¤Ç¤¤¤¤¤Î¤Ê¤é¡¢¤«¤º¤Þ¤µ¤ó¤Î¥½¡¼¥¹¤Îfscanf¤ò¤Þ¤È¤á¤Æ¤·¤Þ¤Ã¤Æ
¢­¤Î¤è¤¦¤Ë¤·¤Æ¤âÂç¾æÉפ«¤Ê¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¤É¤¦¤Ç¤·¤ç¤¦¤«¡©
for (; (n = fscanf(fp, "%*[^a-zA-Z]%255[a-zA-Z]", word)) != EOF;)


No.8665

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¤«¤º¤Þ(2003/07/28 08:43:35)


> ¤È¤ê¤¢¤¨¤º¡¢¾å¤ÎÃμ±¤Ç¤¤¤¤¤Î¤Ê¤é¡¢¤«¤º¤Þ¤µ¤ó¤Î¥½¡¼¥¹¤Îfscanf¤ò¤Þ¤È¤á¤Æ¤·¤Þ¤Ã¤Æ
> ¢­¤Î¤è¤¦¤Ë¤·¤Æ¤âÂç¾æÉפ«¤Ê¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¤É¤¦¤Ç¤·¤ç¤¦¤«¡©
> for (; (n = fscanf(fp, "%*[^a-zA-Z]%255[a-zA-Z]", word)) != EOF;)

¤½¤¦¤Ç¤¹¤Í¡£¤½¤Î¤Û¤¦¤¬¤¤¤¤¤Ç¤¹¤Í¡£¤¢¤ë¤¤¤Ï¡¢while ¤Ë½ñ¤­´¹¤¨¤¿

    while ((n = fscanf(fp, "%*[^a-zA-Z]%255[a-zA-Z]", word)) != EOF)


¤Ê¤¼¡¢¤¢¤Î¤è¤¦¤Ê fscanf ¤ò½ñ¤¤¤¿¤«¤È¤¤¤¦¤È¡¢ºÇ½é¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤ò¹Í¤¨¤Æ
¤³¤ì¤Ç¤Ï¥À¥á¤À¤È»×¤Ã¤¿¤«¤é¤Ç¤¹¡£

    while ((n = fscanf(fp, " %255[a-zA-Z]%*[^a-zA-Z]", word)) != EOF)


No.8666

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¤¢¤«¤Þ(2003/07/28 10:52:14)


while ((n = fscanf(fp, " %255[a-zA-Z]%*[^a-zA-Z]", word)) != EOF)

¤¹¤ß¤Þ¤»¤Ì¡£¤³¤ì¤Î¥À¥á¤Ê¤È¤³¤í¤¬¤ï¤«¤é¤Ê¤¤¤Î¤Ç¤¹¤¬¡Ä
Ƭ¤Ë"%255[a-zA-Z]"¤¬¤¢¤ë¤Î¤Ç¡¢ÆÉ¤ß¹þ¤ó¤Ç¤·¤ç¤Ã¤Ñ¤Ê¤Ë"[^a-zA-Z]"¤¬Í褿¤é
ÆÉ¤á¤Ê¤¯¤Ê¤ë¤Î¤«¤Ê¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢¼ê¸µ¤Îbcc¤Ç¤ÏÌäÂê¤Ê¤¯Æ°¤­¤Þ¤¹¡£
¤Ê¤Ë¤«Â¾¤ËÍýͳ¤¬¤¢¤ê¤Þ¤¹¤Ç¤·¤ç¤¦¤«¡©


No.8669

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¤«¤º¤Þ(2003/07/28 13:53:23)


> while ((n = fscanf(fp, " %255[a-zA-Z]%*[^a-zA-Z]", word)) != EOF)
> ¤¹¤ß¤Þ¤»¤Ì¡£¤³¤ì¤Î¥À¥á¤Ê¤È¤³¤í¤¬¤ï¤«¤é¤Ê¤¤¤Î¤Ç¤¹¤¬¡Ä
> Ƭ¤Ë"%255[a-zA-Z]"¤¬¤¢¤ë¤Î¤Ç¡¢ÆÉ¤ß¹þ¤ó¤Ç¤·¤ç¤Ã¤Ñ¤Ê¤Ë"[^a-zA-Z]"¤¬Í褿¤é
> ÆÉ¤á¤Ê¤¯¤Ê¤ë¤Î¤«¤Ê¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢¼ê¸µ¤Îbcc¤Ç¤ÏÌäÂê¤Ê¤¯Æ°¤­¤Þ¤¹¡£
> ¤Ê¤Ë¤«Â¾¤ËÍýͳ¤¬¤¢¤ê¤Þ¤¹¤Ç¤·¤ç¤¦¤«¡©

ÆþÎϤ¬
--- abc def abc ---
¤Î¾ì¹ç¡¢gcc ¤ä VC++ ¤Ç¤Ï̵¸Â¥ë¡¼¥×¤Ë¤Ê¤ê¤Þ¤¹¡£ÀèÆ¬¤Î - ¤¬ "%255[a-zA-Z]"
¤Ë¥Þ¥Ã¥Á¤·¤Ê¤¤¤Î¤Ç¡¢¤½¤ì¤òÆÉ¤Þ¤º¡¢ÆþÎÏÆ°ºî¤òÂǤÁÀÚ¤ê¤Þ¤¹¡£
bcc ¤Ï¡¢ "%255[a-zA-Z]" ¤¬¼ºÇÔ¤·¤¿¸å¡¢"*[^a-zA-Z]" ¤Ë¿Ê¤ó¤Ç¡¢--- ¤ò
ÆÉ¤ßÈô¤Ð¤¹¤è¤¦¤Ç¤¹¡£¼¡¤Î¥×¥í¥°¥é¥à¤ò»î¤·¤Æ¤âʬ¤«¤ê¤Þ¤¹¡£
    char s1[100] = "ABCDE", s2[100] = "FGHIJ";
    int n = sscanf("--- abc def", " %[a-z]%s", s1, s2);
    printf("n=%d, s1=%s, s2=%s\n", n, s1, s2);

bcc ¤Î·ë²Ì¤Ï¡¢n=1, s1=ABCDE, s2=---
gcc ¤È VC++ ¤Î·ë²Ì¤Ï¡¢n=0, s1=ABCDE, s2=FGHIJ
bcc ¤Ï¡¢¼ºÇÔ¤·¤¿¤é¡¢¤½¤Îʸ»ú°Ê¹ß¤ÏÆÉ¤Þ¤Ê¤¤¤È¤¤¤¦µ¬³Ê¤ËÈ¿¤·¤Æ¤¤¤Þ¤¹¡£

No.8671

Re:²áµî¥í¥°No£±£³£²¤Î¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ
Åê¹Æ¼Ô---¤¢¤«¤Þ(2003/07/28 20:56:48)


¥³¥ó¥Ñ¥¤¥é¤Îµ¬³Ê̵»ë¤Ç¤¹¤«¡£
¤½¤¦¤¤¤¨¤Ð£Ã¤ò¿¨¤ê»Ï¤á¤¿¤³¤íÌá¤êÃͤǤ½¤Î¸å¤Î½èÍý¤òÊѤ¨¤ë¡Ê¥¨¥é¡¼½èÍý¤Ç¤Ï¤Ê¤¯¡Ë¥×¥í¥°¥é¥à¤ò½ñ¤¤¤¿²±¤¨¤¬¡£
¥³¥ó¥Ñ¥¤¥é¤òÊѤ¨¤ë¤Èư¤«¤Ê¤«¤Ã¤¿¤Î¤Ï¤³¤ì¤¬¸¶°ø¤«¡ª

Èó¾ï¤Ë¶²¤í¤·¤¤¤³¤È¤ò¤·¤Æ¤¤¤¿¤Î¤Í¡Ä