/* Programme de test des routines de recherche dans un tampon des Listings 9-1 & 9-2 */ #include #include #define DISPLAY_LENGTH 40 extern unsigned char * FindString(unsigned char *, unsigned int, unsigned char *, unsigned int, unsigned int); void main(void); static unsigned char TestBuffer[] = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit,\ sed diem nonummy nibh euismod tincidunt ut\ lacreet dolore magna aliguam erat volutpat.\ Ut wisis enim ad minim veniam, quis nostrud exerci tution\ ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.\ Duis te feugifacilisi..."; void main() { static unsigned char TestString[] = "quis"; unsigned char TempBuffer[DISPLAY_LENGTH+1]; unsigned char *MatchPtr; /* Recherche TestString et reporte les résultats */ if ((MatchPtr = FindString(TestBuffer, (unsigned int) strlen(TestBuffer), TestString, (unsigned int) strlen(TestString), 1)) == NULL) { /* TestString n'a pas été trouvé*/ printf("\"%s\" n'a pas été trouvé\n", TestString); } else { /* TestString a été trouvée. Ajout d'un zéro terminal à TempBuffer; car strncpy ne le fait pas si DISPLAY_LENGTH caractères sont copiés */ TempBuffer[DISPLAY_LENGTH] = 0; printf("\"%s\" trouvé. Prochains %d caractères à la correspondance :\n\"%s\"\n", TestString, DISPLAY_LENGTH, strncpy(TempBuffer, MatchPtr, DISPLAY_LENGTH)); } }