計算機科学のブログ

C - 高度な関数 - 関数を最大限に活用する - string.h, strstr関数, 部分文字列

Head First C ―頭とからだで覚えるCの基本David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 7章(高度な関数 - 関数を最大限に活用する)、p.313(コードマグネット)の解答を求めてみる。

Makefile

main: main.c
	cc main.c && ./a.out

コード

main.c

#include <stdio.h>
#include <string.h>
int NUM_ADS = 7;
char *ADS[] = {
    "William: SBM GSOH likes sparts, TV, dining",
    "Matt: SWM NS likes art, movies, theater",
    "Luis: SLM ND likes books, theater, art",
    "Mike: DWM DS likes trucks, sports and bieber",
    "Peter: SAM likes chess, working out and art",
    "Josnh: SJM likes sports, movies and theater",
    "Jed: DBM likes theater, books and dining"};
void find()
{
    puts("検索結果");
    puts("--------------------");
    for (int i = 0; i < NUM_ADS; i++)
    {
        if (strstr(ADS[i], "sports") && !strstr(ADS[i], "bieber"))
        {
            printf("%s\n", ADS[i]);
        }
    }
    puts("--------------------");
}
int main()
{
    find();
}

入出力結果(Terminal, Zsh)

% make
cc main.c && ./a.out
検索結果
--------------------
Josnh: SJM likes sports, movies and theater
--------------------
%