问题遇到的现象和发生背景
我会拿到一长串字符,我并不确定会包含哪些内容(中英文都可能),但是我的控件大小是固定的,只能展示一百多像素宽度、高度不限的内容。所以我需要对内容进行处理。
目前仅能简单的区分字符,后面我会加上区分单词等模块。
问题来了,怎么区分文字和字符?按照我写的会把字符打碎比如汉字,导致显示异常,有更好的方案吗?
仅使用C语言,其他语言不考虑!
可以把单词换行展示
例如bug 可以展示为
b
ug
但汉字绝对不能被拆解破坏!
问题相关代码,请勿粘贴截图
#define CHAT_MAX_WORD 10
int main(void)
{
char content[50] = {0};
sprintf(content,"AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLL");
int count = sizeof(content)/sizeof(content[0]);
printf("%s %d\n",content,count);
int count_max = count + count%CHAT_MAX_WORD;
printf("%d\n",count_max);
char *temp = (char *)malloc(count_max);
memset(temp,0,count_max);
int j = 0;
for(int i = 0; i < count; i++)
{
if(i%CHAT_MAX_WORD == 0 && i != 0)
{
temp[j] = '\n';
temp[j+1] = content[i];
j+=2;
}
else
{
temp[j] = content[i];
j++;
}
}
printf("%s%d",temp,count_max);
free(temp);
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
- 汉字不能被改变为乱码,比如问号,英文随意,反正都是字母拼起来的