用C语言模拟Java等面向对象语言中的String对象。
#include <stdio.h>
#include <malloc.h>
typedef struct
{
char* ch;
int length;
}String;
#define TRUE 1
#define FALSE 0
#define OVERFLOW -1
#define null '\0'
void InitString(String* str);
int CreateString(String* str,const char* chars);
void PrintString(const String* str);
void PrintlnString(const String* str);
int StringLength(const String* str);
int StringEmpty(const String* str);
int Compare(const String* str1,const String* str2);
void Clear(String* str);
int Concat(String* str,const String* str1,const String* str2);
int SubString(const String* str,int pos,int len,String* sub_str);
char CharAt(const String* str,int pos);
int Index(const String* str,const String* sub,int pos);
int Contains(const String* str,const String* sub);
int FirstIndexOf(const String* str,char ch);
int LastIndexOf(const String* str,char ch);
char SetCharAt(String* str,int pos,char newChar);
char ReplaceFirst(String* str,char newChar);
char ReplaceLast(String* str,char newChar);
int ReplaceAll(String* str,char oldChar,char newChar);
void ToUpperCase(String* str);
void ToLowerCase(String* str);
int StartWith(const String* str,const char* chars);
int EndWith(const String* str,const char* chars);
int GetCharsLength(const char* chars);
void InitString(String* str)
{
str->ch=NULL;
str->length=0;
}
int CreateString(String* str,const char* chars)
{
int len=GetCharsLength(chars);
InitString(str);
if(len>0)
{
char* pStr;
if(!(str->ch=(char*)malloc(len*sizeof(char))))
return OVERFLOW;
pStr=str->ch;
while(*chars!='\0')/* Copy values */
{
*pStr++ = *chars++;
}
str->length=len;
}
return len;
}
void PrintString(const String* str)
{
int i