7

The C++ main program,

StrRefMain.cc

#include <stdio.h> #include <string.h>

struct TVarLenStr { int NBytes;

char a[25];

};

extern "C" void StrRef ( char *,

char *, TVarLenStr &);

int main(void)

{

struct TVarLenStr vls; char s10[10],

s80[80],

s25[25];

vls.NBytes

=

0;

 

 

StrRef

(s10,

s80,

vls);

 

strncpy

(s25,

vls.a, vls.NBytes);

 

printf ("

s10 = '%s' \n s80 = '%s' \n s25 = '%s' \n",

 

 

s10,

s80,

s25);

printf

("

strlen

(s25) = %d \n",

strlen(s25));

}

The commands to compile and execute StrRef.p and StrRefMain.cc

hostname% pc -c StrRef.p

hostname% CC StrRef.o StrRefMain.cc -lpchostname% a.out

s10 = 'abcdefghi'

s80 = 'abcdefghijklmnopqrstuvwxyz'

s25 = 'varstr' strlen (s25) = 6

The C++–Pascal Interface

143