● 関数リファレンス

文字列の検索

    char * __stdcall   StrCalc_search_word(char *porg,char *psearch,char *pword,int len);

引数

引数名意味
porgヌルで終了している文字列を格納したバッファの先頭アドレス
psearch検索開始アドレス
pword末尾ヌルの検索対象文字列
lenpword が指す文字列の長さ

戻り値

発見した文字列の先頭位置を返します。
発見できなかった場合は末尾ヌルの位置を返します。

説明

pword で指定した文字列を psearch から検索します。

porg には、検索するバッファの先頭アドレスを指定し、psearch には検索開始位置を指定します。2つのポインタは同じバッファ内を指している必要があります。また、porgpsearch の関係である必要があります。

pword には検索対象の文字列を指定し、len にはその長さをバイト単位で指定します。長さには末尾ヌル分を含みません

検索文字列内にある、シングルクォートやダブルクォート、丸括弧で括られた範囲は検索しません。また、シングルクォート、ダブルクォート、丸括弧自体を検索対象とする事はできません。
ダブルクォートの範囲は S-JIS に対応していますが、エスケープシーケンスには対応していません。

次の条件を満たした場合、発見した文字列の先頭位置を返して終了します。
検索はヌル文字が出現するまで続けられます。発見できなかった場合は、末尾ヌルの位置を返し終了します。

例1.

#include <stdio.h>
#include "sc39.h"

void    prn(char *ptr,int len) /* 指定文字数分だけ表示 */
{
    for(;*ptr && len;ptr++,len--)
        putchar(*ptr);
}

void    main(void)
{
    char        *buffer = " 16384 sunday 32768";
    char        *ptr;

    /* "sunday" の検索 */
    ptr = StrCalc_search_word(
                buffer,  /* バッファの先頭 */
                buffer,  /* 検索開始位置:今回は先頭から */
                "sunday",/* 検索対象文字列 */
                6);      /* 検索対象文字列の長さ */

    if (!*ptr){
        printf("not found.\n");
        return;
    }

    /* 先頭 〜 sunday の間にある " 16384 " を表示します */

    printf("\"");
    prn(buffer,ptr - buffer);
    printf("\"\n");
}

注意