汉字字符的编码为双字节,对于汉字字符和单字节字符混排的情况,如果目标截取的字符串内只包含奇数个单字节字符,则会出现半个汉字字符的问题。如下所示:

  (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语言源码相关推荐

  1. C言语实现半隐式Euler解常微分方程(附完整源码)

    实现半隐式Euler解常微分方程 实现以下几个相关接口 实现半隐式Euler解常微分方程的完整源码(定义,实现,main函数测试) 实现以下几个相关接口 void problem(const doub ...

  2. 解决Delphi截取字符串时遇到半个汉字

    演示程序中主要是用了 IsDBCSLeadByte 这个 API 来判断某字节是否在双字节字符集(例如汉字)的前导字节集中(GB 2312-80 汉字编码中的第一个字节范围 0xA1-0xFe) pr ...

  3. C语言字符串中最后一个单词的长度的算法(附完整源码)

    C语言字符串中最后一个单词的长度的算法 C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) ...

  4. C语言两个字符串查找最长的公共子串的算法(附完整源码)

    C语言两个字符串查找最长的公共子串的算法 C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测试) C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测 ...

  5. 奔五的人学ios:swift竟然没有字符串包括,找个简单的解决方法

    swift关于字符串的推断中 有前导.有后缀 两个方法.竟然没有包括推断. 经过学习找了个简单的解决方法: extension String {func has(v:String)->Bool ...

  6. Django使用Ajax传递中文字符串给视图函数显示乱码的解决方法

    网上看到许多Ajax传递中文字符的解决方法,但都是比较高级的方法.我看不懂啊,觉得好复杂.翻了好多前辈的网页,找到一个解决方案.我这里用比较直白的语言解答一下,让像我这样的小白不必看到别人的解答方法就 ...

  7. JZTK项目 驾照题库项目servlet层得到的json字符串在浏览器中 汉字部分出现问号?无法正常显示的解决方法

    servlet层中的代码如下: package com.swift.jztk.servlet;import java.io.IOException;import javax.servlet.Servl ...

  8. Excel 函数教程之如何提取字符串部分内容特殊字符,六套完整解决方案 (教程含源码)

    实战需求 如何提取字符串部分内容substring ? 从字符串中间开始的子字符串? 从字符串中提取最左边的字符? 从字符串中提取最右边的字符? 要在破折号后提取子字符串(任意长度)? 要提取括号(或 ...

  9. JavaScript:实现字符串是否是有效的电子邮件地址算法(附完整源码)

    JavaScript:实现字符串是否是有效的电子邮件地址算法 /*** Returns whether the given string is a valid email address or not ...

最新文章

  1. iOS开发 - 事件传递响应链
  2. 这8种经常被忽视的SQL错误用法,你踩过几个?
  3. python的业务场景_python| Binlog务应用场景
  4. 邻结矩阵的建立和 BFS,DFS;;
  5. 从 Google Code 迁移代码到 GitHub 上
  6. linux之sed使用技巧
  7. web.xml中配置DispatcherServlet前端控制器和CharacterEncodingFilter字符过滤器后web-app标签显红报错
  8. TortoiseSVN使用指南
  9. u盘如何安装2003服务器系统安装,u盘怎么安装win server2003系统是iso
  10. Office2010初次体验之应用程序安全性
  11. Cisco CCNA考试题库大全
  12. 安装第三方库,出现“error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual……”解决方案
  13. 爸妈上班却顶着凛冽的寒风骑着自行车
  14. java项目 无法重命名_项目重命名:出现的问题
  15. 腾讯产品总监曹菲:如何克服职业焦虑
  16. 记人生第一次参加Codeforces比赛
  17. 鸿蒙系统推送表,【前沿】华为P40首发鸿蒙系统?| 附EMUI 10正式版推送时间表
  18. 分布式卷积神经网络计算平台(通用神经网络数据处理卡 Kintex Ultra Scale 系列 KU115)
  19. 点云obb盒显示 python
  20. 路由器为何会有特殊的默认路由(静态路由的一种特殊形式------默认路由)

热门文章

  1. kibana设置端口密码
  2. 讯飞AIUI+唤醒,导致唤醒监听报错10108
  3. 计算机课演示文稿模板,计算机网络拓扑结构公开课PPT模板课件
  4. AWVS登录扫描与不登陆扫描详解
  5. [Web]Canvas手绘时钟
  6. 简述UIImagePickerController的属性和用法
  7. [转载]计算机视觉牛人(转载)(最早在自动化所论坛上发现的)
  8. cropped-admin-ajax.jpg
  9. layui登录页面写入数据_layuiAdmin单页版文档
  10. js高精度计算器 货币计算器