CSTR$
                                  =====

    Fetch a C-type string from memory and return it as a Q-type string

Occasionally one encounters the type of strings as used in C and certain
other programming languages. They differ from Q-type strings (as I call
the way strings are styled unde Qdos/SMSQ) in that they dont have a length
word at the beginning, instead they are null-terminated.

I wont go into the advantages and disadvantages here, suffice it to say
that if you encounter such strings in memory, CSTR$ can deal with them.


Usage
=====

        qstr$ = CSTR$(adr [, skip%])

where

     qstr$ is the resulting Q-string

     adr   is the location of start of the c-string in memory. Addresses
              can be either odd or even.
              On return this contains the address just past the terminating
              zero.

              Or it may contain the error code err.bffl, ie Buffer Full
              (= -5) if the count has passed 32764 bytes without hitting
              a zero.

     skip% is an optional skip counter: The number of previous stings
              to skip to reach the one we want


Example 1
=========

100 REMark Test CSTR$
110 :
120 CLCHP: CLS
130 adr = ALCHP(100)
140 POKE adr, 'this', 0, 'is', 0, 'a test of CSTR$', 0, 0
150 a = adr
160 REPeat loop
170  qstr$ = CSTR$(a)
180  IF a < 0 OR LEN(qstr$) = 0: EXIT loop
190  PRINT LEN(qstr$)! qstr$
200 END REPeat loop
210 RECHP adr
220 REPORT a


Example 2
=========

100 REMark Test CSTR$ skip
110 :
120 CLCHP: CLS
130 adr = ALCHP(100)
140 POKE adr, 'string 1', 0, 'string 2', 0, 'string 3', 0
150 a = adr
160 FOR i = 1 TO 3: PRINT CSTR$(a)
170 PRINT
180 a = adr
190 PRINT CSTR$((a), 2)
200 PRINT CSTR$((a), 1)
210 PRINT CSTR$((a), 0)
220 RECHP adr


Programming notes
=================

This command should work on all systems, including later versions of
Turbo.

See also CSTRCMP% to compare two c-strings in memory, and COMPM% which
compares different specified values in memory including c-strings and
n-strings.


Software status
===============

V0.01, pjw, 2023 Jul 04
V0.02, pjw, 2023 Aug 11, changed buffer for skip

               Conditions of use and DISCLAIMER as per Knoware.no

Generated by QuickHTM, 2023 Aug 13