CONST BLANK = ' '; TYPE CHAR80 = PACKED ARRAY [1..80] OF CHAR; FUNCTION trim (C : CHAR80) : CHAR80; VAR I : INT; IN_QUOTE : BOOLEAN; J,K : INT; T : CHAR80; BEGIN I := 1; WHILE (I<80) AND (C[I] = BLANK) DO I := I + 1; IN_QUOTE := FALSE; FOR J := I TO 80 DO BEGIN IF (C[J] = #39) THEN IF (J=1) OR ((C[J+1]=BLANK) AND (C[J+2]=BLANK)) THEN IN_QUOTE := NOT IN_QUOTE; T[J-(I-1)] := C[J]; END; W := 80; WHILE (W > 0) AND (T[W]=BLANK) DO W := W-1; trim := T; END;
I claim that there are at least 6 bugs in the above code. (And that's not counting most of the readability problems.)
Try to identify the problems yourself, then click here to see my answers.
(Click here for the "How To Code Pascal" paper.)