C/C++ 保证字符串末尾汉字的完整性

原创 2016年08月30日 17:13:28

示例程序如下:

int z_chi_nohalf(const char *s, int l)
{
	int len = 0, i = 0;
	if( s == NULL || *s == 0 || l <= 0 )
	{
		return 0;
	}
	while(*s)
	{
		if( (*s & 0x80) == 0 )
		{
			i++;
			s++;
			len++;
		}
		else
		{
			if( *(s + 1) == 0 )
			{
				break;
			}
<span style="white-space:pre">			</span>//UTF-8编码 汉字占用3字节 如果是GB2312 则汉字占用2字节,此时要加2 下面的 减3  同理
			i += 3;
			s += 3;
			len += 3;
		}
		if( i == l )
		{
			break;
		}
		else if(i > l)
		{
			len -= 3;
			break;
		}
	}
	return len;
}


java与C语言在字符串结束符上的区别

综述:在C语言中字符串或字符数组最后都会有一个额外的字符‘\0’来表示结束,而在java语言中没有结束符这一概念。具体见下面分析。 1. C 语言   在C语言中字符串和字符数组基本上没有区别,都需要...
  • sszgg2006
  • sszgg2006
  • 2015年10月15日 09:50
  • 8440

C笔记之NULL和字符串结束符'\0'和EOF

一.NULL NULL是一个宏,它在几个标准头文件中定义,0是一个整型常量,'\0'是一个字符常量,而NUL是一个字符常量的名字。这几个术语都不可互换。 1、NULL用于表示什么也不指向,也就是空...
  • liaoqianwen123
  • liaoqianwen123
  • 2013年12月01日 21:25
  • 3287

字符串末尾自动加上'\0'的情况

之前一直都有一个问题困扰着我,就是我们知道C风格的字符串在用strlen求长度时只会遇到'\0'结束,如果一个字符数组全部填满了,而在末尾没有加上'\0'就会出现结果不定的现象(一直读取当前内存后面的...
  • monkey_D_feilong
  • monkey_D_feilong
  • 2016年06月17日 20:19
  • 2064

char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)

本着低碳的原则将几个变量声明为nchar,结果发现尾巴上每次都多一大串空格,C#中不得不多次Trim劳心费神易出错。上网一查原来四种字符串看似相近其实讲究很多,其中以本帖最为全面,特此转发。 原...
  • lanximu
  • lanximu
  • 2013年11月27日 13:16
  • 1362

python 字符串末尾换行符处理

找到以"imooc"开头和结尾的字符串 imooc.txt文件内容如下: 1 def find_start_imooc(fname): 2 f=open(fname) ...
  • qiqiaiairen
  • qiqiaiairen
  • 2016年05月22日 21:02
  • 346

JS光标定位到文本框字符串末尾

JS光标定位到文本框字符串末尾   在开发网站表单的时候,为了给用户良好的体验度,在验证表单数据的时候,我们会先使用JavaScript来进行表单数据的验证,如果用户输入的数据不对,我们就可以马上给...
  • cy19272961151353
  • cy19272961151353
  • 2014年05月27日 15:55
  • 410

JS光标定位到文本框字符串末尾

JS光标定位到文本框字符串末尾   在开发网站表单的时候,为了给用户良好的体验度,在验证表单数据的时候,我们会先使用JavaScript来进行表单数据的验证,如果用户输入的数据不对,我们就可以马上给...
  • cy17272961151353
  • cy17272961151353
  • 2014年05月24日 09:35
  • 1917

char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)

char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格) 本着低碳的原则将几个变量声明为nchar,结果发现尾巴上每...
  • Dark_Spider
  • Dark_Spider
  • 2014年10月29日 22:13
  • 411

Xamarin.Mac中使用emoji表情,以及让输入框获取焦点,并将光标定位到字符串末尾

public override void ViewDidLoad() { base.ViewDidLoad(); NSTextField tf1 = new NSTextField(...
  • u010975266
  • u010975266
  • 2016年10月11日 11:46
  • 437

java和vb进行socket通信以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决

java和vb进行socket 以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决 我遇到的是 java 编码字符集采用 UTF-8 编码字符采用2+字符 我测试的代码如下...
  • vpingchangxin
  • vpingchangxin
  • 2013年05月17日 00:09
  • 2031
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++ 保证字符串末尾汉字的完整性
举报原因:
原因补充:

(最多只允许输入30个字)