码迷,mamicode.com
首页 > 其他好文 > 详细

C之函数指针

时间:2014-12-08 15:10:55      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

这方面的技能,在观察系统调用时,是很需要的。

但我不是很熟悉,另外,要再会函数指针数组的话,那就更强啦~~

按《HEAD FIRST C》作了个样例:

cat find.c 
#include <stdio.h>
#include <string.h>

int NUM_ADS = 7;
char *ADS[] = {
  "William: SBM GSOH like sports, TV, dining",
  "Matt: SWM NS likes art, movie, theater",
  "Peter: SHN like out ,art",
  "DWM: DS likes truncks, sports and bieber",
  "Luis: SLM ND likes books, theater, art",
  "Josh: SJM likes sports, movies and theater",
  "Mike: DWM DS likes trucks, sports and bieber"
  };
void find_raw() {
  int i;
  puts("Raw search results:");
  puts("=================");
  for (i = 0; i < NUM_ADS; i++) {
        if (strstr(ADS[i], "sports" )
          && !strstr(ADS[i], "bieber")) {
          printf("%s\n", ADS[i]);
        }
  }
  puts("================");
}
int sports_no_bieber(char *s){
  return strstr(s, "sports") && !strstr(s, "bieber");
}
int sports_or_workout(char *s){
  return strstr(s, "sports") || strstr(s, "workout");
}
int theater_or_dining(char *s){
  return strstr(s, "theater") || strstr(s, "dining");
}

void find(int (*match)(char*) ){
  int i;
  puts("Search results:");
  puts("*******************");
  for (i = 0; i < NUM_ADS; i++) {
    if ((*match)(ADS[i])) {
      printf("%s ;\n", ADS[i]);
    }
    if (!match(ADS[i])) {
      printf("$$$$$$$$$$$$$\n");
    }
  }
  puts("*************************");
}
int main() {
  find_raw();
  find(sports_or_workout);
  find(&theater_or_dining);
  return 0;
}

bubuko.com,布布扣

C之函数指针

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/aguncn/p/4151078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!