#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <stdlib.h>
char *bm_reverse_text_match(char *pat , char *txt){
char pt;
char pp;
int txt_len = strlen(txt);
int pat_len = strlen(pat);
int skip[UCHAR_MAX + 1];
int i;
for(i = 0; i <strlen(txt)/2; i++)
swap(char,(pt+i),(pt + txt_len - i));
for (i = 0; i<= UCHAR_MAX; i++)
skip[i] = pat_len;
for(pp = pat;*pp != '\n'; pp++)
skip[pp] = strlen(pp) - 1;
skip[(pp-1)] = pat_len;
pt = txt + pat_len - 1;
while(pt < txt + txt_len){
pp = pat + pat_len - 1;
while(*pt == *pp){
if(pp == pat) return (pt);
pp--;
pt--;
}
pt += (skip[*pt]>strlen(pp))?skip[*pt] : strlen(pp);
}
return (NULL);
}
int main(void){
char *s;
char s1[80];
char s2[80];
printf("テキスト:");
scanf("%s",s1);
printf("パターン:");
scanf("%s",s2);
s = bm_reverse_text_match(s2,s1);
if(s==NULL)
puts("テキスト中にパターンは存在しません。");
else
printf("%d文字目に見つかりました。\n",s-s1+1);
return (0);
}
エラー文
expected expression before 'char'
swap(char,(pt+i),(pt+txt_len - i));
for(i = 0; i <strlen(txt)/2; i++)
swap(char,(pt+i),(pt + txt_len - i));をコメントにすれば通ります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。