|
> ¸¡º÷ʸ»úÎó¤¬1¥Ð¥¤¥Èʸ»ú¤«2¥Ð¥¤¥Èʸ»ú¤«¤Ã¤ÆÌäÂê¤Ï;¤êµ¤¤Ë¤·¤Ê¤¯¤Æ
> µ¹¤·¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
¸¡º÷¤µ¤ì¤ë¤Û¤¦¤Î¥Æ¥¥¹¥È¤¬ 1¥Ð¥¤¥Èʸ»ú¤« 2¥Ð¥¤¥Èʸ»ú¤«¤ËÃí°Õ¤·
¤Æ¡¢¤¤Á¤ó¤Èʸ»ú¶³¦¤Ç¸¡º÷ʸ»úÎó¤ÈÈæ³Ó¤¹¤ì¤Ð¡¢¸¡º÷ʸ»úÎó¤Î¤Û¤¦
¤¬ 1¥Ð¥¤¥Èʸ»ú¤« 2¥Ð¥¤¥Èʸ»ú¤«¤Ïµ¤¤Ë¤·¤Ê¤¯¤Æ¤è¤¤¤Ç¤·¤ç¤¦¡£
#include <stdio.h>
#define isKanji(c) (((c) & 0xFF ^ 0x20) - 0xA1u < 60)
char *find(const char *s1, const char *s2)
{
for (; *s1; s1 += isKanji(*s1) ? 2 : 1) {
const char *p1 = s1, *p2 = s2;
do {
if (*p2 == 0) return (char *)s1;
} while (*p1++ == *p2++);
}
return NULL;
}
int main(int argc, char *argv[])
{
FILE *fp; char buf[1024];
if (argc != 3) return printf("usage: hogehoge file string\n"), 1;
fp = fopen(argv[1], "r");
if (fp == NULL) return printf("can't open %s\n", argv[1]), 1;
while (fgets(buf, sizeof buf, fp))
if (find(buf, argv[2])) break;
puts(feof(fp) ? "not found" : "found");
fclose(fp);
return 0;
}
|