#include #include #include int numberOfBytesInChar(unsigned char val); int utf8strlen(char *s); int main(void){ char s[] = "Hello world"; char s2[] = "Привет Мир"; printf("strlen(s) = %llu\n",strlen(s)); printf("strlen(s2) = %llu\n",strlen(s2)); printf("utf8strlen(s) = %d\n",utf8strlen(s)); printf("utf8strlen(s2) = %d\n",utf8strlen(s2)); return 0; } int numberOfBytesInChar(unsigned char val) { if (val < 0x80) return 1; else if (val < 0xE0) return 2; else if (val < 0xF0) return 3; else return 4; } int utf8strlen(char *s) { char *tmp = s; int len = 0; while( *tmp ) { tmp += numberOfBytesInChar(*tmp); len++; } return len; }