Ok. Is there a way to use strsub() to add  newline to a string? 

Logan 


-------- Original message --------
From: "Riccardo (Jack) Lucchetti"
Date:04/23/2014 2:24 AM (GMT-06:00)
To: Gretl list
Subject: Re: [Gretl-users] Questions about strings and string substitution

On Wed, 23 Apr 2014, Logan Kelly wrote:

> Hello,
>
> Question about strings and string substitution. Why does option 1 yield
> different output from option 2 (see below). I am using 1.9.14 on Win 7
> 64bit
>
> hansel:
>
> #option 1
> s = "1\n2\n3\n"
> printf "@s"
>
> #option 2
> printf "1\n2\n3\n"
>
> OUTPUT:
>
> gretl version 1.9.14
> Current session: 2014-04-22 23:49
> #option 1
> ? s = "1\n2\n3\n"
> Replaced string s
> ? printf "@s"
> 1\n2\n3\n
>
> #option 2
> ? printf "1\n2\n3\n"
> 1
> 2
> 3

That's by design. The two sister funtions/commands printf and sprintf
support ASCII control characters, simple assignment does not. If you need
to embed a newline or a tab into a string, use sprintf. For example:

<hansl>
sprintf a "%d\t%d", 3, 4
print a
</hansl>

That said, we are considering the idea to turn the sprintf command into a
function (this is already available in CVS and the snapshots), so perhaps
you may want to experiment with the new notation, which would be

scalar n = sprintf(a, "%d\t%d", 3, 4)

where n is the number of characters that "a" contains.


-------------------------------------------------------
   Riccardo (Jack) Lucchetti
   Dipartimento di Scienze Economiche e Sociali (DiSES)

   Università Politecnica delle Marche
   (formerly known as Università di Ancona)

   r.lucchetti@univpm.it
   http://www2.econ.univpm.it/servizi/hpp/lucchetti
-------------------------------------------------------