Submit
Path:
~
/
/
opt
/
alt
/
libicu65
/
usr
/
share
/
doc
/
alt-libicu65-devel-65.1
/
samples
/
break
/
File Content:
ubreak.c
/* ******************************************************************************* * * © 2016 and later: Unicode, Inc. and others. * License & terms of use: http://www.unicode.org/copyright.html#License * ******************************************************************************* ******************************************************************************* * * Copyright (C) 2002, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* */ #include <stdio.h> #include <stdlib.h> #include <unicode/ustring.h> #include <unicode/ubrk.h> U_CFUNC int c_main(void); void printTextRange(UChar* str, int32_t start, int32_t end) { char charBuf[1000]; UChar savedEndChar; savedEndChar = str[end]; str[end] = 0; u_austrncpy(charBuf, str+start, sizeof(charBuf)-1); charBuf[sizeof(charBuf)-1]=0; printf("string[%2d..%2d] \"%s\"\n", start, end-1, charBuf); str[end] = savedEndChar; } /* Print each element in order: */ void printEachForward( UBreakIterator* boundary, UChar* str) { int32_t end; int32_t start = ubrk_first(boundary); for (end = ubrk_next(boundary); end != UBRK_DONE; start = end, end = ubrk_next(boundary)) { printTextRange(str, start, end ); } } /* Print each element in reverse order: */ void printEachBackward( UBreakIterator* boundary, UChar* str) { int32_t start; int32_t end = ubrk_last(boundary); for (start = ubrk_previous(boundary); start != UBRK_DONE; end = start, start =ubrk_previous(boundary)) { printTextRange( str, start, end ); } } /* Print first element */ void printFirst(UBreakIterator* boundary, UChar* str) { int32_t end; int32_t start = ubrk_first(boundary); end = ubrk_next(boundary); printTextRange( str, start, end ); } /* Print last element */ void printLast(UBreakIterator* boundary, UChar* str) { int32_t start; int32_t end = ubrk_last(boundary); start = ubrk_previous(boundary); printTextRange(str, start, end ); } /* Print the element at a specified position */ void printAt(UBreakIterator* boundary, int32_t pos , UChar* str) { int32_t start; int32_t end = ubrk_following(boundary, pos); start = ubrk_previous(boundary); printTextRange(str, start, end ); } /* Creating and using text boundaries*/ int c_main( void ) { UBreakIterator *boundary; char cStringToExamine[] = "Aaa bbb ccc. Ddd eee fff."; UChar stringToExamine[sizeof(cStringToExamine)+1]; UErrorCode status = U_ZERO_ERROR; printf("\n\n" "C Boundary Analysis\n" "-------------------\n\n"); printf("Examining: %s\n", cStringToExamine); u_uastrcpy(stringToExamine, cStringToExamine); /*print each sentence in forward and reverse order*/ boundary = ubrk_open(UBRK_SENTENCE, "en_us", stringToExamine, -1, &status); if (U_FAILURE(status)) { printf("ubrk_open error: %s\n", u_errorName(status)); exit(1); } printf("\n----- Sentence Boundaries, forward: -----------\n"); printEachForward(boundary, stringToExamine); printf("\n----- Sentence Boundaries, backward: ----------\n"); printEachBackward(boundary, stringToExamine); ubrk_close(boundary); /*print each word in order*/ boundary = ubrk_open(UBRK_WORD, "en_us", stringToExamine, u_strlen(stringToExamine), &status); printf("\n----- Word Boundaries, forward: -----------\n"); printEachForward(boundary, stringToExamine); printf("\n----- Word Boundaries, backward: ----------\n"); printEachBackward(boundary, stringToExamine); /*print first element*/ printf("\n----- first: -------------\n"); printFirst(boundary, stringToExamine); /*print last element*/ printf("\n----- last: --------------\n"); printLast(boundary, stringToExamine); /*print word at charpos 10 */ printf("\n----- at pos 10: ---------\n"); printAt(boundary, 10 , stringToExamine); ubrk_close(boundary); printf("\nEnd of C boundary analysis\n"); return 0; }
Submit
FILE
FOLDER
Name
Size
Permission
Action
Makefile
627 bytes
0644
break.cpp
4222 bytes
0644
break.sln
1200 bytes
0644
break.vcxproj
9301 bytes
0644
break.vcxproj.filters
968 bytes
0644
readme.txt
2258 bytes
0644
ubreak.c
4023 bytes
0644
N4ST4R_ID | Naxtarrr