我正在尝试在多个进程上进行一些字符串匹配。现在我想弄清楚如何将字符串拆分成更小的片段以发送到不同的进程。
这是我现在使用的方法(不发送到进程,只是调用字符串段上的匹配函数来模拟):
for (i = 1; i < numProcesses+1; i++){
int charsToSend;
int k = len/numProcesses;
charsToSend = k + sublen;
char* temp[100];
strncpy(temp, base + ((i*k)-k), charsToSend);
temp[charsToSend] = '\0';
int m = matches(temp, sub);
printf("Matches for p%d : %d\n", i, m);
}
它的作用是根据进程数决定将字符串拆分成多少个字符。然后它决定发送该数字,加上子串的长度,这样如果匹配跨越切割线,它仍然被计算。
我遇到的问题是,由于我为每个进程重叠一个子字符串长度,如果在该重叠中存在完全匹配,则会计算两次。
关于如何最好地分割字符串的任何想法,所以我在边界上没有多个子字符串计数?