用一组地址连续的存储单元存储串值的字符序列,为每个定义的串变量分配一个固定长度的存储区。
串的实际长度可以在预定长度的范围内随意,超过预定义长度的串值则被舍去,称之为“截断”。
对于串长的表示有两种:一是以下标为0的数组分量存放串的实际长度;二是在串值后面加一个不计入串长的结束标记字符。 这里串的顺序存储使用第一种方式记录串长。
//串的顺序存储方式
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 255
typedef unsigned char SString[MAXSIZE+1];
//这种定义方式的理解
//SString S 就等价于 unsigned char S[MAXSIZE+1]
typedef int Status;
Status StrAssign(SString S,char *ch)
{
int i;
if(strlen(ch)>MAXSIZE) return ERROR;
S[0]=strlen(ch);
for(i=1;i<=S[0];i++)
{
S[i]=*(ch+i-1);
}
return OK;
}
Status StrCopy(SString S,SString T)
{
for(int i=0;i<T[0];i++)
{
S[i]=T[i];
}
return OK;