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));
}
原文地址:http://blog.csdn.net/songjunyan/article/details/25324325