Thanks Petra! But I still don't quite follow. Isn't s1 a variable that I can reassign a new value to? What makes it a constant that I shouldn't assign?

What bothers me isn't the sprintf (which seems to work fine), but the assignment of "**" above. What is printed by the following printf isn't "**" (except the 1st time) - what's printed is the value of s1 from the preceding bar.

Thanks.