文書番号: 402711
最終更新日: 1998/03/23
#include <jstring.h> #include <jctype.h> #include <stdio.h> void main() { char str1[] = "abc"; char str2[] = "B"; char *p; int cnt; printf("\"abc\"から\"B\"を検出\n\n"); p = str1; cnt = 0; while ( ( p = jstrmatch2( p, str2 ) ) ) { cnt++; p += ( iskanji( *p ) ? 2 : 1 ); } printf( "\"B\"を %d 個検出\n", cnt ); p = str1; cnt = 0; while ( ( p = jstrskip2( p, str2 ) ) ) { cnt++; p += ( iskanji( *p ) ? 2 : 1 ); } printf( "\"B\"以外の文字を %d 個検出\n", cnt ); }
unsigned char * _CDECL jstrmatch2( const unsigned char *string, const unsigned char *charset ) { unsigned char *p, *q; for (q = (char *)string; *q != '\0'; q++) { for (p = (char *)charset; *p != '\0'; p++) { if (iskanji(*p)) { if (((*p == *q) && (p[1] == q[1])) || p[1] == '\0') break; p++; } else if (*p == *q) break; } if (*p != '\0') break; if (iskanji(*q)) if (*++q == '\0') break; } return((*q)?q:(char *)0); } unsigned char * _CDECL jstrskip2( const unsigned char *string, const unsigned char *charset ) { unsigned char *p, *q; for (q = (char *)string; *q; q++) { for (p = (char *)charset; *p; p++) { if (iskanji(*p)) { if (((*p == *q) && (p[1] == q[1])) || p[1] == '\0') break; p++; } else if (*p == *q) break; } if(*p == '\0') break; if (iskanji(*q)) if (*++q == '\0') break; } return((*q)?q:(char *)0); }
Keywords: KBBUG KB402711
Technology: kbAudDeveloper kbCCompSearch kbQC200 kbZNotKeyword3