IVY DOM


 

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
优质美国空间-老薛主机|IVY DOM|Flowline|

联系我

RSS




九月 30, 2012

[开源]纯C语言仿的VB字符串函数

//********************************************************************
int len(char string[STRMAX])
{
//返回一段char型文本的长度
int str_length;
str_length=strlen(string);
return str_length;
}
//********************************************************************
int instr(char s1[STRMAX],char s2[STRMAX],int start)
{
//instr 查找一段文本,若找到但会第一次出现的位置,若没找到返回-1 位置从1开始 如果si《s2将返回0
int i,j;
int lengtha,lengthb;
lengtha=len(s1);
lengthb=len(s2);
if(lengtha<lengthb)
{
return 0;
}
for(i=start;i<lengtha-lengthb;i++)
{
for(j=0;j<lengthb;j++)
{
if(s2[j]!=s1[i+j])
{
break;
}
if(j>=lengthb){
return -1;
}
return i+1;
}
}
}
//********************************************************************
void left(char saveleft[100000],char *totall,int lnums)
{
//取一段文本的指定个数左边文本 save为储存形参,传参时要把实参初始化为空或者其它
strncpy(saveleft,totall,lnums);
}
//********************************************************************
void right(char saveright[STRMAX],char *totalr,int nums)
{
//返回一段文本的右边指定个数 saveright为储存形参,传参时要把实参初始化为空或其它
int lengthr,i,j=0;
lengthr=len(totalr);
i=lengthr-nums;
while(i<lengthr)
{
saveright[j]=*(totalr+i);
i++;j++;
}
}
//********************************************************************
int stringcount(char sour[],char *token)
{
//返回一段文本中指定字符串的个数
int count=0;
char *p=sour;
while(*p!='�')
{
p++;
if(*p==*token)
{
count+=1;
}
}
return count;
}
//********************************************************************
int asc(char ch)//返回一个字符的ASCII代码
{
return ch;
}
char chr(int asciicode)//返回一个ASCII代码的字符代表值
{
return (char)asciicode;
}
//********************************************************************

//用法

/*
char tt[10]="";
char s[10]="",*pp;
printf("Source="我啊",length=%dn",len("我啊"));
printf("Source="fucfk",instr1=%dn",instr("fucfk","f",1));
left(tt,"fu-ck",2);
printf("Source="fu-ck",left2=%sn",tt);
right(s,"abcdfrgdf",3);
printf("Source="abcdfrgdf",right3=%sn",s);
split("sdfs-sdfgdf","-");
char s[]="123e*-*456789";
char *delim="*-*";
char *p;
int c=stringcount(s,delim);
p=strtok(s,delim);
while(p)
{
printf("%sn",p);
p=strtok(NULL,delim);
}
*/

相关文章

返回
    • 贱贱..
    • 九月 30th, 2012

    - -看不懂..

    • 九月 30th, 2012

    你敢不敢代码高亮?高亮不了就算了……缩进也该有吧。这让我怎么看啊- -

      • ivy
      • 九月 30th, 2012

      我这没有高亮插件
      本来有 缩进 发来就没缩进了= =

        • 十月 2nd, 2012

        你没有我发给你,别再折磨我们的眼睛了- –

        搜索SyntaxHighlighter

  1. 糟糕透顶的代码。列出几个「语法」错误:
    1:STRMAX是什么玩意儿?参数传字符串的地址就好,char saveleft[100000]又是什么灰机?
    2:字符串字面值常量中的双引号,请转义(")。
    3:友情提示:C对宽字符的支持不大好。举例子请用英文。
    4:这高亮插件……’n’的反斜杠貌似被吞掉了。
    5:第61行很诡异的说……

    「语义」没仔细看。缩进很蛋疼……

    • 1.STRMAX是个常量 我忘了把声明复制过来 因为上面还有些东西 char saveleft[100000]你要看不懂的话我就没办法了 这个事char数组参数
      2.我没明白你的意思
      3.这个可以改进
      4.插件问题 可以升级
      5.我用手机看不到行数懒得找了

      语义在vc6下编译测试通过

  1. 暂无 Trackback

You must be logged in to post a comment.