今天心情不好,状态十分差,昨晚没睡好,进早上还早起,就写一点吧,这章是很简单的。上个代码。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 20
#define FALSE 0
#define TRUE 1
typedef struct String {
char string[MAXSIZE];
int length;
}SString;
int InitStr (SString **S , char *c) {
char *ptr = c;
*S = (SString *) malloc (sizeof (SString));
(*S)->length = 0;
while (*ptr != '\0') {
(*S)->string[(*S)->length] = *ptr;
(*S)->length++;
ptr++;
}
}
int StrInsert (SString *a , int pos , SString *b) {
int i;
if (pos <= 0 || pos >= MAXSIZE || pos > a->length)
return FALSE;
if (a->length + b->length <= MAXSIZE) {
for (i = 0 ; i < a->length - pos + 1 ; i++) {
a->string[a->length-i-1+b->length] = a->string[a->length-i-1];
}
for (i = 0 ; i < b->length ; i++)
a->string[pos-1+i] = b->string[i];
a->length += b->length;
}else if (pos + b->length <= MAXSIZE) {
for (i = 0 ; i < MAXSIZE - pos - b->length + 1 ; i++)
a->string[a->length-1+i+b->length] = a->string[a->length-1-i];
for (i = 0 ; i < b->length ; i++)
a->string[pos-1+i] = b->string[i];
a->length = MAXSIZE;
}else {
for (i = 0 ; i < MAXSIZE - pos + 1 ; i++)
a->string[pos-1+i] = b->string[i];
a->length = MAXSIZE;
}
return TRUE;
}
地一个函数是初始化,第二个是插入函数,分三种情况讨论。