Arrays of Strings
It is possible to declare an array of strings, but remember that each string element needs its own EOS character. Typically, the strings would be allocated dynamically and referenced in a called procedure, as shown in Example C.11.
The important points to keep in mind are that strings implemented as arrays of chars (shorts), even though they are declared a fixed size, they may not use the entire declared space. A special character value (EOS, implemented as ASCII NUL
) is used as the string terminator. Most procedures that require strings also take an argument specifying the string length. This does not mean that the entire declared string will be used, only the maximum possible string size. There are a few important exceptions.
Characters vs. Strings
Note the distinction between single and double quoted characters. Single quotes indicate the ASCII value of a single character and are treated as an int scalar in processed SPP. Double quoted strings are literal strings and may only be specified as actual procedure arguments or the object of a string declaration. Using single quoted characters in place of a char array can cause unexpected problem, for example in:
stridx ('x', string)
'x' is an int, while stridx() expects a char. Other routines with this problem include ungetc() and putc(). Note that the cast operator char ('x') does not work! It translates into int(120). You should use something like:
char x_char
x_char = 'x'
i = stridx (x_char, string)
Generated with CERN WebMaker