#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 对含有中文 的字符串进行检查的时候表现不正常!?的更多相关文章

  1. java处理含有中文的字符串.

    1. 问题描述: 原始数据是以行为单位的, 每行固定长度931个字节, 汉字占2个字节, 按照字典描述,共有96个字典,只有第32个字典为中文地址, 所以需要单独处理. 由于项目设计保密,故删除敏感数 ...

  2. java对含有中文的字符串进行Unicode编码

    public class MyUtil { public static void main(String[] args) throws Exception { String s = "a中a ...

  3. C#:对含有中文的字符串进行MD5加密

    MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider(); var Sign = BitConverter.ToString(MD5. ...

  4. java判断字符串中是否含有中文

    /** * 判断字符串中是否含有中文 */ public static boolean isCNChar(String s){ boolean booleanValue = false; for(in ...

  5. base64编码的字符串(含有中文) 前端解码

    base64编码的字符串(含有中文) 前端解码 https://xue5602.github.io/2018/12/19/atob%E8%A7%A3%E7%A0%81utf-8%E5%AD%97%E7 ...

  6. php中判断字符串是否全是中文或含有中文的实现代码

    <?php header('Content-type:text/html; charset=utf-8'); $str = '你好'; if(preg_match('/^[\x{4e00}-\x ...

  7. PHP中判断字符串是否含有中文

    <?php /** * [1.测试一] * 当$str = '中文测试'; 时输出"全部是汉字";当$str = '中a文3测试'; 时输出"不全是汉字" ...

  8. php正则判断字符串是否含有中文

    <?php $str = '若你安好便是晴天'; if (preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $str)>0) { echo '全是中文'; } ...

  9. php使用strlen()判断中文汉字字符串长度

    php使用strlen()判断中文汉字字符串长度 对于含有中文情况,此时可以采用: iconv_strlen($str,"UTF-8"); iconv_strlen 是无论是何种编 ...

随机推荐

  1. MFC Timer定时器

    知识点: 定时器Timer 创建定时器 销毁定时器 代码测试 一. 创建定时器 UINT SetTimer( HWND hWnd, // 指定关联定时器的窗口句柄,在MFC版将省略此参数 UINT n ...

  2. linux 定时器原理

    内核定时器:    unsigned long timeout = jiffies + (x * HZ);    while(1) {        // Check the condition.   ...

  3. [CF1009G]Allowed Letters[贪心+霍尔定理]

    题意 给你一个长为 \(n\) 的串,字符集为 \(a,b,c,d,e,f\) .你可以将整个串打乱之后重新放置,但是某些位置上有一些限制:必须放某个字符集的字符.问字典序最小的串,如果无解输出 &q ...

  4. SSIS 更新变量

    在Package中声明一个variable,在package运行的过程中,SSIS如何update Variable? 第一种方法:使用 Script Task 来更新Variable的值 1,创建一 ...

  5. BigDecimal工具类

    package config_service.slowcity; import java.math.BigDecimal; public class ConfigServerApp { /* * 小数 ...

  6. svn插件下载的两种方式

     1.下载SVN插件     SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.x  Links for 1.8.x Release:          Eclipse up ...

  7. 转--看完让你彻底搞懂Websocket原理

    偶然在知乎上看到一篇回帖,瞬间觉得之前看的那么多资料都不及这一篇回帖让我对 websocket 的认识深刻有木有.所以转到我博客里,分享一下.比较喜欢看这种博客,读起来很轻松,不枯燥,没有布道师的阵仗 ...

  8. 利用KMP算法解决串的模式匹配问题(c++) -- 数据结构

    题目: 7-1 串的模式匹配 (30 分) 给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串 ...

  9. PAT甲题题解-1122. Hamiltonian Cycle (25)-判断路径是否是哈密顿回路

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789799.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  10. git学习心得(1)

    这次是第一次用git这个平台,还非常不熟练,尤其是在上传代码的步骤上,有好几次都出了问题,多次询问了同学才将代码上传到平台上,git是一个分布式版本控制系统,相对于集中式的来说具有很多优点,但是中文资 ...