Mercurial > hg > Members > e085722 > Cerium
view example/test/ppe/Exec.cc @ 5:8f445f1bfe66 default tip
3d camera
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 06 Dec 2010 17:20:56 +0900 |
parents | 3f6fe22ac669 |
children |
line wrap: on
line source
#include <stdio.h> #include <string.h> #include "Exec.h" #include "Func.h" #include "WordGrep.h" /* これは必須 */ SchedDefineTask(Exec); void print(SchedTask *s,char *r_data); //実際のタスク内での処理 static int run(SchedTask *s, void *rbuf, void *wbuf){ //int *o_data = (int*)wbuf; //int *o_data = (int *)s->get_output(wbuf, 0); char *r_data = (char *)s->get_input(rbuf,0); char sstr[10] = "the"; int len_r_data = (int)strlen(r_data); int len_sstr = (int)strlen(sstr); printf("%s : %s\n",sstr,r_data); int search = 0; int s_next = 0; int hits = 0; while(search+len_sstr <= len_r_data){//残り検索文字列が検索文字列より少なくなるまで s_next = len_sstr;//ヒットしない場合は検索文字の文字数分進む for(int i = 0;i<len_sstr;i++){ if(sstr[len_sstr-i-1] == r_data[len_sstr+search-1]){//1文字だけ比較する if(i == 0){//検索文字の末尾だった場合 if(strncmp(r_data+search,sstr,len_sstr) == 0){//文字列が一致した場合 print(s,&r_data[search]); hits++; } }else if(i < s_next){//1文字だけヒットした場合 s_next = i;//その文字分だけ進む } } } search += s_next; } //o_data[0] = hits; return 0; } //表示部分 void print(SchedTask *s,char *r_data){ s->printf(" hit : "); for(int j = 0;j < 5;j++){ if(r_data[j] == 0){ break; }else{ s->printf("%c",r_data[j]); } } s->printf("\n"); }