`
wu2004
  • 浏览: 8769 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

C 截取中文字串

阅读更多
网上有不少的java中文截取方法,但似乎一直没有一个好的办法用c对中文字串进行处理。
例如一个很长的字串,想分多行显示。

#include "stdafx.h"
#include<string.h>

void  getSubStr(char *str,char *substr,int start,int end);
void getStr(char *str,char *substr,int start,int end);
int startposizition(char *str,int start);
int endposizition(char *str,int end);





int main()
{
	char str[500]="你好啊kkkk131你0啊3黑KKK乎fds乎好fdsa看到发 你埃弗fasf顿阿发fds生飞洒大法舒服阿飞多少";
	char substr[200];
	memset(substr,0,sizeof(substr));

	getSubStr(str,substr,0,5);
	printf("%s",substr);

	getSubStr(str,substr,5,11);
	printf("%s",substr);

	getSubStr(str,substr,11,13);
	printf("%s",substr);

	getSubStr(str,substr,13,17);
	printf("%s",substr);
	
	getSubStr(str,substr,17,30);
	printf("%s",substr);

	getSubStr(str,substr,30,50);
	printf("%s",substr);
	return 0;
}


/*
*  getsubstr此函数为截取中文函数,当一个字串过长,分段截取中,汉字占双字节,而字符为单字节
*  参数说明
*  str      传入字串
*  substr	返回子串
*  start    取值开始位置
*  end      取值结束位置
*	示例
*	char str[500]="你好啊kkkk131你0啊3黑KKK乎fds乎好fdsa看到发 你埃弗fasf顿阿发fds生飞洒大法舒服阿飞多少";
*	char substr[200];
*	memset(substr,0,sizeof(substr));
*	getSubStr(str,substr,0,5);getSubStr(str,substr,6,11);...
*/

void  getSubStr(char *str,char *substr,int start,int end)
{
	start = startposizition(str,start);
	end   = endposizition(str,end);
	getStr(str,substr,start,end);	
}


void getStr(char *str,char *substr,int start,int end)
{
	char temp[200];
	int  i=0;
	memset(temp,0,sizeof(temp));

	for(start;start<=end;start++)
	{
		temp[i]=str[start];
		i++;
	}
	temp[i]='\0';
	strcpy(substr,temp);
}


/*判断末端取值位置*/
int endposizition(char *str,int end)
{
	int i=0;			//用于计数
	int posizition=0;	//还回位置
	int tempposi=end; 
	while(str[tempposi]<0)
	{
		i++;
		tempposi--;
	}

	if(i%2==0 && i!=0)
			posizition=end;	
	else
			posizition=end-1;	
	return posizition;
}


/*判断开始取值位置*/
int startposizition(char *str,int start)
{
	int i=0;			//用于计数
	int posizition=0;	//还回位置
	int tempposi=start;  
	while(str[tempposi]<0)
	{
		i++;
		tempposi--;
	}

	if(i%2==0 && i!=0)
			posizition=start+1;	
	else 
			posizition=start;	
	return posizition;
}


2
0
分享到:
评论

相关推荐

    Lephone Loczlize Plus 1.06 中文免费版 PE 字串替换器.zip

    Lephone Loczlize Plus 1.06 中文注册版是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译...

    Visual C#常用函数和方法集汇总

    * 截取字串的一部分:`string s1 = str.Substring(0, 2);` 8. 获取远程用户 IP 地址 可以使用 Request.ServerVariables 获取远程用户的 IP 地址。 * 获取远程用户 IP 地址:`String user_IP = Request....

    C#函数方法集_文件操作大全(中文含目录)

    ### C#函数方法集_文件操作大全(中文含目录) #### 概述 本文档旨在为C#开发者提供一个全面的函数与方法集合,重点聚焦于文件操作领域,旨在帮助学习者更好地理解和应用C#语言中的相关技术。通过本文档的学习,...

    php笔试面试详解大全

    3. **中文字串截取**:在PHP中,处理中文字符截取时需要防止乱码。`gbsubstr`函数是一个自定义函数,通过检查每个字符的Unicode编码,确保正确处理中文字符。 4. **获取IP地址**:`$_SERVER["REMOTE_ADDR"]`和`...

    个人收集的php 面试材料

    9. **中文字串截取**:使用`mb_substr()`函数配合`charset`参数,可以避免中文截取时出现乱码。 10. **版本控制软件**:常见版本控制软件如Git、SVN,用于代码版本管理。 11. **模板引擎**:例如Smarty、Twig等,...

    c#函数速查表!懒人的选择

    ` // Len 是自定义变量,str 是求测的字串的变量名 5. GetBytes 函数 GetBytes 函数用于将字符串转换为比特码。示例代码如下: * `byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);` * `len = ...

    PHP的面试题集收集整理.doc

    面试题10:实现中文字串截取无乱码,可以使用`mb_substr()`函数,它支持多字节字符集。 面试题2: 1. `unset()`取消引用,但不会改变原始变量,所以`$a`仍是"hello"。 2. 自增操作符`++`优先级高于赋值,所以`$b`会...

    php面试题

    10. **实现中文字串截取无乱码** - 使用`mb_substr()`函数替代`substr()`函数,以避免乱码问题。 #### 面试题2 1. **变量引用与赋值** - `$a`的值仍然是"hello",因为`unset($b)`只是删除了对`$a`的引用,并...

    2016PHP面试题

    实现中文字串截取无乱码的方法。 ```php function mb_substr($str, $start, $length, $charset = "UTF-8") { return mb_substr($str, $start, $length, $charset); } ``` #### 23. 对于大流量的网站,您采用什么...

    一份超级全面的PHP面试题

    9. **中文字串截取**:使用`mb_substr()`函数,配合`mb_internal_encoding()`设定编码,防止乱码。 10. **版本控制软件**:如Git、SVN,用于版本管理和协作开发。 11. **模板引擎**:如Smarty、Twig等,用于分离...

    ASP.NET常用代码

    DataNavigateUrlField="字段名" DataNavigateUrlFormatString="http://xx/inc/delete.aspx?ID={0}" 15.DataGrid行随鼠标变色 private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls....

Global site tag (gtag.js) - Google Analytics