码迷,mamicode.com
首页 > 其他好文 > 详细

字符串解析

时间:2014-05-09 01:25:02      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:c++   c   c语言   字符串 算法   

#include<stdio.h>
#include<stdlib.h>
#define FALSE 0  //函数执行错误返回0
#define TRUE 1 //函数执行正确返回1
//串的堆分配存储表示
typedef struct
{
char *ch;
int length;
}String;
//对串的所有操作都可以通过以下五个基本函数实现
void StrInit(String *);//串的初始化函数
int StrAssign(String *,char *);//串赋值
int StrLength(String str); //求串长
int StrCompare(String ,String); //串比较
int StrCombine(String *,String,String);//串连接

int StrSub(String *,String,int,int); //求子串


#include "q.h"
#include <stdio.h>
void InitStr(String *str) //传引用初始化字符串
{
str->ch = NULL;
     str->length = 0;
}
int StrAssign(String *str,char *s)
{
if(!str->ch)              //先判断如果字符串不为空赋值字符串为空
{
free(str->ch);
str->ch = NULL;
}
int i;
for (i = 0;s[i]!=‘\0‘;i++);//查看输入的字符串此时i在\0的位置   
if(!i)                      //如果输入的字符串为空串则直接赋值为空

str->ch=NULL;                         
    str->length = 0;
}
else                     //   如果输入的字符串不是空串

str->ch=(char*)malloc(sizeof(char)*(i+1));//分配char字符串包括\0内存大小加入分配一个字符
if(!str->ch)             //分配内存失败退出
{
printf("ORVEFLOW!");
 return FALSE;
}
    for (int j=0;j<=i;j++)                 //从字符串的开始处赋值ch[0]为首地址
{
*(str->ch+j) = s[j];   //s字符串从开始复制str->ch
str->length = i;
}

}
return TRUE;
}
int StrLength(String str)   //求字符串长度直接从结构体中返回
{
return str.length;
}
void main()
{
String str;
InitStr(&str);
StrAssign(&str,"hello world");
printf("%d",StrLength(str));


}

字符串解析,布布扣,bubuko.com

字符串解析

标签:c++   c   c语言   字符串 算法   

原文地址:http://blog.csdn.net/songjunyan/article/details/25324325

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!