isspace 对含有中文 的字符串进行检查的时候表现不正常!?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h> //删除右边连续的空格,
char* rtrim(char *pstr)
{
char *p = pstr; int len = strlen(pstr);
p += len - ; for(; isspace(*p) && len > ; p--,len--)
{
*p = '\0'; //截断
} return pstr;
} int main()
{
char text[] = {"D:\\我的文档 "};
printf("text:%s, length:%d\n",text,strlen(text)); char *p = rtrim(text); printf("text:%s, length:%d\n",p,strlen(p)); return ;
}
输出结果: (为什么中文[文档]两字会输出乱码?)
---------------------------------------
text:D:\我的文档 , length:13
text:D:\我的? length:8
检查了半天,估计是isspace()的问题,不使用isspace(), 改写:
for(; (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r') && len > 0; p--,len--)
{
*p = '\0'; //截断
}
再测试,就正常了。
输出结果:
---------------------------------------
text:D:\我的文档 , length:13
text:D:\我的文档, length:11
续:
几天之后又意外发现,在处理 '字'开头的中文时,也会出现乱码。
看来以后处理中文字符串的时候,不能用isspace()函数了,太危险了。
isspace 对含有中文 的字符串进行检查的时候表现不正常!?的更多相关文章
- java处理含有中文的字符串.
1. 问题描述: 原始数据是以行为单位的, 每行固定长度931个字节, 汉字占2个字节, 按照字典描述,共有96个字典,只有第32个字典为中文地址, 所以需要单独处理. 由于项目设计保密,故删除敏感数 ...
- java对含有中文的字符串进行Unicode编码
public class MyUtil { public static void main(String[] args) throws Exception { String s = "a中a ...
- C#:对含有中文的字符串进行MD5加密
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider(); var Sign = BitConverter.ToString(MD5. ...
- java判断字符串中是否含有中文
/** * 判断字符串中是否含有中文 */ public static boolean isCNChar(String s){ boolean booleanValue = false; for(in ...
- base64编码的字符串(含有中文) 前端解码
base64编码的字符串(含有中文) 前端解码 https://xue5602.github.io/2018/12/19/atob%E8%A7%A3%E7%A0%81utf-8%E5%AD%97%E7 ...
- php中判断字符串是否全是中文或含有中文的实现代码
<?php header('Content-type:text/html; charset=utf-8'); $str = '你好'; if(preg_match('/^[\x{4e00}-\x ...
- PHP中判断字符串是否含有中文
<?php /** * [1.测试一] * 当$str = '中文测试'; 时输出"全部是汉字";当$str = '中a文3测试'; 时输出"不全是汉字" ...
- php正则判断字符串是否含有中文
<?php $str = '若你安好便是晴天'; if (preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $str)>0) { echo '全是中文'; } ...
- php使用strlen()判断中文汉字字符串长度
php使用strlen()判断中文汉字字符串长度 对于含有中文情况,此时可以采用: iconv_strlen($str,"UTF-8"); iconv_strlen 是无论是何种编 ...
随机推荐
- 20155338 《网络攻防》Exp5 MSF基础应用
20155338 <网络攻防>Exp5 MSF基础应用 基础问题回答 1. 用自己的话解释什么是exploit,payload,encode? exploit将真正要负责攻击的代码传送到靶 ...
- EZ 2018 03 09 NOIP2018 模拟赛(三)
最近挺久没写比赛类的blog了 链接:http://211.140.156.254:2333/contest/59 这次的题目主要考验的是爆搜+打表的能力 其实如果你上来就把所有题目都看过一次就可以知 ...
- Dubbo+zookeeper搭建环境学习笔记
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 1.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本 ...
- linux下tomcat指定jdk和配置运行参数
一.指定运行jdk 1)set classpath.sh和catalina.sh中写入: export JAVA_HOME=/usr/local/java/jdk1.8.0_121 export JR ...
- TimelineJS JSON 数据格式 - 译文 [原创]
TimelineJS 是用于绘制时间轴的 Javascript 开源脚本,目前是 TimelineJS3 版.参阅 https://github.com/NUKnightLab/TimelineJS3 ...
- foreach 当被循环的变量为空时 不进入循环
$a = []; foreach($a as $v){ echo 222; } //不会输出222 并且不会报错
- Python 安装 imread报错
看到一篇博客才解决 http://blog.csdn.net/u010480899/article/details/52701025
- 人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git
首先先说说Intellij IDEA与git的互联,首先在任意(我是在coding)gitlab里新建一个工程. 然后新建一个工程记得注明url和地址.名称等 如果无法创建,则需要指定git地址 创建 ...
- VS2013安装及测试
一.Visual Studio的安装 首先是Visual Studio英文版的安装,安装完成后,为了用的时候方便,我从官网下载Visual Studio 2013的语言包并安装. 二.进行单元测试. ...
- Access restriction: The type 'BASE64Decoder' is not API
Access restriction: The type 'BASE64Decoder' is not API (restriction on required library 'C:\Program ...