我的 C81 每天都在口袋里 @
gchar *demo_text = "我的 C81 每天都在口袋里\n" " @";
glong offset = g_utf8_strlen(demo_text, -1);
glong g_utf8_strlen(const gchar *p, gssize max);
gchar *tail = g_utf8_offset_to_pointer(demo_text, offset - 1);
gchar * g_utf8_prev_char(const gchar *str, const gchar *p);
glong offset = g_utf8_strlen(demo_text, -1);
gchar *viewer = g_utf8_offset_to_pointer(demo_text, offset - 1);
while (1) {
viewer = g_utf8_prev_char(viewer);
if (viewer != demo_text) {
/* do somthing here */
} else {
break;
}
}
viewer = g_utf8_prev_char(viewer);
g_print("%s", viewer);
gchar *new_viewer = g_utf8_next_char(viewer);
sizt_t n = new_viewer - viewer;
gchar *utf8_char = malloc(n + 1);
memcpy(utf8_char, viewer, n);
utf8_char[n] = '\0';
g_print("%s", utf8_char);
free(utf8_char);
static gchar * get_utf8_char(const gchar *base) {
gchar *new_base = g_utf8_next_char(base);
gsize n = new_base - base;
gchar *utf8_char = g_memdup(base, (n + 1));
utf8_char[n] = '\0';
return utf8_char;
}
glong offset = g_utf8_strlen(demo_text, -1);
gchar *viewer = g_utf8_offset_to_pointer(demo_text, offset - 1);
while (1) {
gchar outbuf[7] = {'\0'};
viewer = g_utf8_prev_char(viewer);
if (viewer != demo_text) {
gchar *utf8_char = get_utf8_char(viewer);
g_print("%s", utf8_char);
g_free(utf8_char);
} else {
break;
}
}
g_print("\n");
static gboolean is_space(const gchar *s) {
gboolean ret = FALSE;
char *space_chars_set[] = {" ", "\t", " "};
size_t n = sizeof(space_chars_set) / sizeof(space_chars_set[0]);
for (size_t i = 0; i < n; i++) {
if (!strcmp(s, space_chars_set[i])) {
ret = TRUE;
break;
}
}
return ret;
}
static gboolean is_line_break(const gchar *s) {
return (!strcmp(s, "\n") ? TRUE : FALSE);
}
gboolean is_right_at_sign = TRUE;
glong offset = g_utf8_strlen(demo_text, -1);
gchar *viewer = g_utf8_offset_to_pointer(demo_text, offset - 1);
while (viewer != demo_text) {
viewer = g_utf8_prev_char(viewer);
gchar *utf8_char = get_utf8_char(viewer);
if (!is_space(utf8_char)) {
if (!is_line_break(utf8_char)) {
is_right_at_sign = FALSE;
g_free(utf8_char);
break;
} else {
g_free(utf8_char);
break;
}
}
g_free(utf8_char);
}
if (is_right_at_sign) g_print("Right @ !\n");
gboolean is_right_at_sign = TRUE;
glong offset = g_utf8_strlen(demo_text, -1);
gchar *viewer = g_utf8_offset_to_pointer(demo_text, offset - 1);
while (viewer != demo_text) {
viewer = g_utf8_prev_char(viewer);
gchar *utf8_char = get_utf8_char(viewer);
if (!is_space(utf8_char)) {
if (!is_line_break(utf8_char)) is_right_at_sign = FALSE;
g_free(utf8_char);
break;
}
g_free(utf8_char);
}
if (is_right_at_sign) g_print("Right @ !\n");
static gboolean is_space(const gchar *c) {
gboolean ret = FALSE;
gchar *utf8_char = get_utf8_char(c);
char *space_chars_set[] = {" ", "\t", " "};
size_t n = sizeof(space_chars_set) / sizeof(space_chars_set[0]);
for (size_t i = 0; i < n; i++) {
if (!strcmp(utf8_char, space_chars_set[i])) {
ret = TRUE;
break;
}
}
g_free(utf8_char);
return ret;
}
static gboolean is_line_break(const gchar *c) {
gboolean ret = FALSE;
gchar *utf8_char = get_utf8_char(c);
if (!strcmp(utf8_char, "\n")) ret = TRUE;
g_free(utf8_char);
return ret;
}
gboolean is_right_at_sign = TRUE;
glong offset = g_utf8_strlen(demo_text, -1);
gchar *viewer = g_utf8_offset_to_pointer(demo_text, offset - 1);
while (viewer != demo_text) {
viewer = g_utf8_prev_char(viewer);
if (!is_space(viewer)) {
if (!is_line_break(viewer)) is_right_at_sign = FALSE;
break;
}
}
if (is_right_at_sign) g_print("Right @ !\n");
#include <string.h>
#include <glib.h>
gchar *demo_text =
"我的 C81 每天都在口袋里\n"
" @";
static gchar * get_utf8_char(const gchar *base) {
gchar *new_base = g_utf8_next_char(base);
gsize n = new_base - base;
gchar *utf8_char = g_memdup(base, (n + 1));
utf8_char[n] = '\0';
return utf8_char;
}
static gboolean is_space(const gchar *c) {
gboolean ret = FALSE;
gchar *utf8_char = get_utf8_char(c);
char *space_chars_set[] = {" ", "\t", " "};
size_t n = sizeof(space_chars_set) / sizeof(space_chars_set[0]);
for (size_t i = 0; i < n; i++) {
if (!strcmp(utf8_char, space_chars_set[i])) {
ret = TRUE;
break;
}
}
g_free(utf8_char);
return ret;
}
static gboolean is_line_break(const gchar *c) {
gboolean ret = FALSE;
gchar *utf8_char = get_utf8_char(c);
if (!strcmp(utf8_char, "\n")) ret = TRUE;
g_free(utf8_char);
return ret;
}
int main(void) {
gboolean is_right_at_sign = TRUE;
glong offset = g_utf8_strlen(demo_text, -1);
gchar *viewer = g_utf8_offset_to_pointer(demo_text, offset - 1);
while (viewer != demo_text) {
viewer = g_utf8_prev_char(viewer);
if (!is_space(viewer)) {
if (!is_line_break(viewer)) is_right_at_sign = FALSE;
break;
}
}
if (is_right_at_sign) g_print("Right @ !\n");
return 0;
}
$ gcc `pkg-config --cflags --libs glib-2.0` utf8-demo.c -o utf8-demo
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有