网上有不少的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;
}
分享到:
相关推荐
Lephone Loczlize Plus 1.06 中文注册版是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译...
* 截取字串的一部分:`string s1 = str.Substring(0, 2);` 8. 获取远程用户 IP 地址 可以使用 Request.ServerVariables 获取远程用户的 IP 地址。 * 获取远程用户 IP 地址:`String user_IP = Request....
### C#函数方法集_文件操作大全(中文含目录) #### 概述 本文档旨在为C#开发者提供一个全面的函数与方法集合,重点聚焦于文件操作领域,旨在帮助学习者更好地理解和应用C#语言中的相关技术。通过本文档的学习,...
### C#函数方法集_文件操作大全(中文含目录) #### 一、概述 本文档旨在为C#开发者提供一个全面且实用的函数方法集合,特别是聚焦于文件操作相关的功能。通过这些方法,开发者可以更加高效地处理日期时间、字符串...
3. **中文字串截取**:在PHP中,处理中文字符截取时需要防止乱码。`gbsubstr`函数是一个自定义函数,通过检查每个字符的Unicode编码,确保正确处理中文字符。 4. **获取IP地址**:`$_SERVER["REMOTE_ADDR"]`和`...
9. **中文字串截取**:使用`mb_substr()`函数配合`charset`参数,可以避免中文截取时出现乱码。 10. **版本控制软件**:常见版本控制软件如Git、SVN,用于代码版本管理。 11. **模板引擎**:例如Smarty、Twig等,...
` // Len 是自定义变量,str 是求测的字串的变量名 5. GetBytes 函数 GetBytes 函数用于将字符串转换为比特码。示例代码如下: * `byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);` * `len = ...
面试题10:实现中文字串截取无乱码,可以使用`mb_substr()`函数,它支持多字节字符集。 面试题2: 1. `unset()`取消引用,但不会改变原始变量,所以`$a`仍是"hello"。 2. 自增操作符`++`优先级高于赋值,所以`$b`会...
10. **实现中文字串截取无乱码** - 使用`mb_substr()`函数替代`substr()`函数,以避免乱码问题。 #### 面试题2 1. **变量引用与赋值** - `$a`的值仍然是"hello",因为`unset($b)`只是删除了对`$a`的引用,并...
实现中文字串截取无乱码的方法。 ```php function mb_substr($str, $start, $length, $charset = "UTF-8") { return mb_substr($str, $start, $length, $charset); } ``` #### 23. 对于大流量的网站,您采用什么...
9. **中文字串截取**:使用`mb_substr()`函数,配合`mb_internal_encoding()`设定编码,防止乱码。 10. **版本控制软件**:如Git、SVN,用于版本管理和协作开发。 11. **模板引擎**:如Smarty、Twig等,用于分离...
DataNavigateUrlField="字段名" DataNavigateUrlFormatString="http://xx/inc/delete.aspx?ID={0}" 15.DataGrid行随鼠标变色 private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls....