|
|
1.1 ! root 1: /******************************************************************* ! 2: * * ! 3: * File: CIFPLOT/string.c * ! 4: * Written by Dan Fitzpatrick * ! 5: * copyright 1980 -- Regents of the University of California * ! 6: * * ! 7: ********************************************************************/ ! 8: ! 9: ! 10: #include <stdio.h> ! 11: #include "defs.h" ! 12: #include "globals.h" ! 13: ! 14: IMPORT alloc(); ! 15: ! 16: string ! 17: CatString(s1,s2) ! 18: string s1,s2; ! 19: /* Concatenate 's1' & 's2' */ ! 20: { ! 21: string p; ! 22: int i,j; ! 23: p = (char *) alloc(LengthString(s1)+LengthString(s2)-1); ! 24: for (i=0; '\0' != (p[i] = s1[i]);) i++; ! 25: for (j=0; '\0' != (p[i++] = s2[j++]);); ! 26: return(p); ! 27: } ! 28: ! 29: string ! 30: Concat(args) ! 31: /* Concatenate an arbitrary number of arguments terminated by a 0 */ ! 32: { ! 33: string s,t; ! 34: union { ! 35: string *p; ! 36: int *a; ! 37: } x; ! 38: ! 39: s = CatString("",""); ! 40: x.a = &args; ! 41: ! 42: while (*(x.p) != 0) { ! 43: t = CatString(s,*(x.p++)); ! 44: Free(s); ! 45: s = t; ! 46: } ! 47: return(s); ! 48: } ! 49: ! 50: LengthString(s) ! 51: string s; ! 52: /* Return the length of the string 's' */ ! 53: { ! 54: int i; ! 55: for (i=0; '\0' != s[i++];); ! 56: return(i+1); ! 57: } ! 58: ! 59: string ! 60: MakeString(c) ! 61: char c; ! 62: /* Return a string that contains only the character in 'c' */ ! 63: { ! 64: char s[2]; ! 65: s[0] = c; ! 66: s[1] = '\0'; ! 67: return(Concat(s,0)); ! 68: } ! 69: ! 70: char * ! 71: strip(s) ! 72: char *s; ! 73: /* Returns a pointer to the string of characters in 's' ! 74: * without leading or trailing white spaces */ ! 75: { ! 76: char *t; ! 77: while (*s == ' ' || *s == '\t' || *s == '\n') s++; ! 78: t = s; ! 79: while (*t != ' ' && *t != '\t' && *t != '\n' && *t != 0) t++; ! 80: *t = 0; ! 81: return(s); ! 82: } ! 83:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.