带有汉字的字符串截断出现半个“汉字”的解决方法-C语言源码
汉字字符的编码为双字节,对于汉字字符和单字节字符混排的情况,如果目标截取的字符串内只包含奇数个单字节字符,则会出现半个汉字字符的问题。如下所示:
(1)天水市秦州区南郭路2号(工行七里墩分理处? --包含数字字符,单字节。
(2)七里河区金港城金福花园20号楼3号(金港城?--包含数字字符,单字节。
(3)甘肃银馨春天餐饮服务业有限责任公司(省委? --包含英文格式半括号。
以上为截取字符串前四位以后的显示结果,其中“?”为半个汉字编码的显示。要想解决以上问题可以采用截取最后一个非法字符,并用合法字符替换的方法。实例代码如下所示:
#include <stdio.h>
int chkHalfChinese(char *buf,int len)
{
int i = 0;
int cnt = 0;
int idx;
for(i=0;i<len;i++)
{
int value = buf[i]&0xFF;
if(value>160)
{
cnt++;
idx=i;
}
}
if(cnt%2)
{
buf[idx] =' ';
return(1);
}
else
{
return(0);
}
}
int main(void)
{
char str[44] = "天水市秦州区南郭路2啊(工行七里墩分理处里家";
if(chkHalfChinese(str,40)==1)
{
printf("true\n");
}
else
{
printf("false\n");
}
printf("%s\n",&str);
return 0;
}
程序代码在Linux环境下测试通过,运行结果如下图所示:
带有汉字的字符串截断出现半个“汉字”的解决方法-C语言源码相关推荐
- C言语实现半隐式Euler解常微分方程(附完整源码)
实现半隐式Euler解常微分方程 实现以下几个相关接口 实现半隐式Euler解常微分方程的完整源码(定义,实现,main函数测试) 实现以下几个相关接口 void problem(const doub ...
- 解决Delphi截取字符串时遇到半个汉字
演示程序中主要是用了 IsDBCSLeadByte 这个 API 来判断某字节是否在双字节字符集(例如汉字)的前导字节集中(GB 2312-80 汉字编码中的第一个字节范围 0xA1-0xFe) pr ...
- C语言字符串中最后一个单词的长度的算法(附完整源码)
C语言字符串中最后一个单词的长度的算法 C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) ...
- C语言两个字符串查找最长的公共子串的算法(附完整源码)
C语言两个字符串查找最长的公共子串的算法 C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测试) C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测 ...
- 奔五的人学ios:swift竟然没有字符串包括,找个简单的解决方法
swift关于字符串的推断中 有前导.有后缀 两个方法.竟然没有包括推断. 经过学习找了个简单的解决方法: extension String {func has(v:String)->Bool ...
- Django使用Ajax传递中文字符串给视图函数显示乱码的解决方法
网上看到许多Ajax传递中文字符的解决方法,但都是比较高级的方法.我看不懂啊,觉得好复杂.翻了好多前辈的网页,找到一个解决方案.我这里用比较直白的语言解答一下,让像我这样的小白不必看到别人的解答方法就 ...
- JZTK项目 驾照题库项目servlet层得到的json字符串在浏览器中 汉字部分出现问号?无法正常显示的解决方法
servlet层中的代码如下: package com.swift.jztk.servlet;import java.io.IOException;import javax.servlet.Servl ...
- Excel 函数教程之如何提取字符串部分内容特殊字符,六套完整解决方案 (教程含源码)
实战需求 如何提取字符串部分内容substring ? 从字符串中间开始的子字符串? 从字符串中提取最左边的字符? 从字符串中提取最右边的字符? 要在破折号后提取子字符串(任意长度)? 要提取括号(或 ...
- JavaScript:实现字符串是否是有效的电子邮件地址算法(附完整源码)
JavaScript:实现字符串是否是有效的电子邮件地址算法 /*** Returns whether the given string is a valid email address or not ...
最新文章
- iOS开发 - 事件传递响应链
- 这8种经常被忽视的SQL错误用法,你踩过几个?
- python的业务场景_python| Binlog务应用场景
- 邻结矩阵的建立和 BFS,DFS;;
- 从 Google Code 迁移代码到 GitHub 上
- linux之sed使用技巧
- web.xml中配置DispatcherServlet前端控制器和CharacterEncodingFilter字符过滤器后web-app标签显红报错
- TortoiseSVN使用指南
- u盘如何安装2003服务器系统安装,u盘怎么安装win server2003系统是iso
- Office2010初次体验之应用程序安全性
- Cisco CCNA考试题库大全
- 安装第三方库,出现“error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual……”解决方案
- 爸妈上班却顶着凛冽的寒风骑着自行车
- java项目 无法重命名_项目重命名:出现的问题
- 腾讯产品总监曹菲:如何克服职业焦虑
- 记人生第一次参加Codeforces比赛
- 鸿蒙系统推送表,【前沿】华为P40首发鸿蒙系统?| 附EMUI 10正式版推送时间表
- 分布式卷积神经网络计算平台(通用神经网络数据处理卡 Kintex Ultra Scale 系列 KU115)
- 点云obb盒显示 python
- 路由器为何会有特殊的默认路由(静态路由的一种特殊形式------默认路由)