#include #include #include "str.h" STR* newstr(void){ STR *newstr; SLIST *newlist; newlist=(SLIST*)malloc(sizeof(SLIST)); if(newlist==NULL){ return NULL; } newstr=(STR*)malloc(sizeof(STR)); if(newstr==NULL){ free(newlist); return NULL; } newlist->next=NULL; newstr->begin=newstr->end=newlist; newstr->size=0; return newstr; } int addchar(STR *s, char c){ SLIST *newlist; newlist = (SLIST*) malloc(sizeof(SLIST)); if(newlist==NULL){return 0;} s->size++; newlist->next=NULL; s->end->moji=c; s->end->next=newlist; s->end=newlist; return 1; } int strsize(STR *s){ return s->size; } int addchararray(STR *s,char *c){ for (;*c != '\0'; c++) { if (addchar(s, *c) == 0) { return 0; } } return 1; } void appendstr(STR *s, STR *t){ s->end->moji = t->begin->moji; s->end->next = t->begin->next; s->end = t->end; s->size += t->size; free(t->begin); free(t); } int fputstr(FILE *fh, STR *s){ SLIST *p; for(p = s->begin; p->next != NULL; p = p->next) fputc(p->moji, fh); return s->size; }