HP SunSoft Pascal 4.0 User Manual

Page 144

Advertising
background image

120

Pascal 4.0 User’s Guide

6

Avoid constructs that rely on strings being in static variable storage. For
example, you could use

mktemp

(3) in Pascal as follows:

This use is incorrect, since

mktemp()

modifies its argument. Instead, use the C

library routine

strncpy()

(see

string

(3)) to copy the string constant to a

declared

char

array variable, as in:

The commands to compile and
execute

StrVar.c

and

StrVarMain.p

hostname% cc -c StrVar.c

hostname% pc StrVar.o StrVarMain.p

hostname% a.out

abcdefghij

abcdefghijklmnopqrtstuvwxyz

varstr

length(v) = 6

Incorrect use of string in static
variable storage

tmp := mktemp('/tmp/eph.xxxxxx')

Correct solution using the C
library routine

strncpy()

program Use_mktemp ;

procedure strncpy( var dest: univ string ;

var srce: univ string ;

length: integer) ; external c ;

procedure mktemp(var dest: univ string); external c;

...

var path: string ;

begin

...

strncpy( path, '/tmp/eph.xxxxxx', sizeof(path)) ;

mktemp( path ) ;

...

end .

Advertising