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
-------------------------------------------------------