#include <stdio.h>
#define M 255
typedef struct node{
char data[M];
int length;
}SString;
void Init_Str(SString &str){
str.data[0]='\0';
str.length=0;
}
int strlen(char s[]){ //利用局部变量的返回
int i=0;
while(s[i]!='\0'){
i++;
}
return i+1;
}
void StrAssign(SString &str,char s[]){ //串赋值
for(int i=0;i<strlen(s);i++){
str.data[i]=s[i];
}
str.length=strlen(s);
}
bool StrCopy(SString &str,SString T){ //串拷贝
if(T.length==0){
return false;
}
for(int i=0;i<T.length;i++){
str.data[i]=T.data[i];
}
str.length=T.length; //修改后长度也要改变
return true;
}
int StrCompare(SString str,SString T){
//串大小比较规则:首先比较每个位置上的字母,如果每个位置均相同才比较长度
for(int i=0;i<str.length-1 && i<T.length-1;i++){
if(str.data[i]<T.data[i]){
return -1;
}
if(str.data[i]>T.data[i]){
return 1;
}
}
if(str.length<T.length){
return -1;
}
if(str.length==T.length){
return 0;
}
if(str.length>T.length){
return 1;
}
}
bool Concat(SString &str,SString s){ //串拼接直接接到末尾
if(str.length+s.length>M){
return false;
}
int j=0;
for(int i=str.length-1;i<str.length+s.length-1;i++){
str.data[i]=s.data[j];
j++;
}
str.length=str.length+s.length-1;
return true;
}
SString SubString(SString &Sub,SString S,int pos,int len){ //将S中从pos开始的长度为len的子串截取出来
if(pos<0 || pos>S.length || pos+len>S.length){
return Sub;
}
Sub.length=len;
for(int i=pos-1;i<pos+len-1;i++){
Sub.data[i]=S.data[i];
}
return Sub;
}
bool EmptyStr(SString str){ //判断串是否非空
if(str.length==0){
return true;
}
return false;
}
void test(){
SString s,t,h;
Init_Str(s);
Init_Str(t);
Init_Str(h);
char ch[20]="bbbbb";
char ch1[8]="bbb";
StrAssign(s,ch);
puts(s.data);
StrAssign(t,ch1);
puts(t.data);
SubString(h,s,1,6);
puts(h.data);
/*
StrCopy(s,t);
puts(s.data);*/
/* Concat(s,t);
puts(s.data);*/
//printf("%d %d",StrCompare(s,t));
}
int main(){
test();
return 0;
}
串的顺序表实现(C语言)
最新推荐文章于 2024-04-17 15:00:00 发布
本文介绍了使用C语言实现基本的字符串操作,包括初始化、赋值、拷贝、比较、拼接和子串截取。提供了详细的函数实现及示例,帮助理解C语言中字符串处理的原理。
213

被折叠的 条评论
为什么被折叠?



