Hatena::Groupcprogramming

Going My C Way このページをアンテナに追加 RSSフィード

2010年11月03日(水)

strchr()

| 00:31 |  strchr() - Going My C Way を含むブックマーク はてなブックマーク -  strchr() - Going My C Way  strchr() - Going My C Way のブックマークコメント

strchr() を書いてみます。

manpage 抜粋。

       #include <string.h>

       char *strchr(const char *s, int c);

ソース strchr.c

#include <stddef.h>  /* size_t */

char *my_strchr(const char *s, int c)
{
    while (*s) {
        if (*s == (char)c) {
            return (char *)s;
        }
        s++;
    }

    return NULL;
}

/*
    ここから下はテスト用の main 関数
*/
#if defined(TEST_MAIN)

#include <stdio.h>  /* printf(), puts() */
#include <stdlib.h> /* EXIT_SUCCESS */
#include <string.h> /* memset() */
#include "testmisc.h" /* dump() */

#define put_p(p_)   (printf(#p_ " = (%p)\n", p_))

int main(void)
{
    const char *msg = "hello, world";

    put_p(msg);

    put_p( my_strchr(msg, 'h') );
    put_p( my_strchr(msg, 'l') );
    put_p( my_strchr(msg, ',') );
    put_p( my_strchr(msg, 'd') );
    put_p( my_strchr(msg, 'x') );


    return EXIT_SUCCESS;
}
#endif /* defined(TEST_MAIN) */

Makefile

ビルド

$ make strchr

テスト。

$ ./strchr 
msg = (0x80485c0)
my_strchr(msg, 'h') = (0x80485c0)
my_strchr(msg, 'l') = (0x80485c2)
my_strchr(msg, ',') = (0x80485c5)
my_strchr(msg, 'd') = (0x80485cb)
my_strchr(msg, 'x') = ((nil))

OK。