D - Bug?: Well, find it
- Lars Ivar Igesund (62/62) Oct 29 2003 Look at the following program and output (given an input argument).
- Walter (3/3) Oct 30 2003 The problem you're having is that the first argument to printf() must be...
- Lars Ivar Igesund (6/9) Oct 30 2003 *Blush*
Look at the following program and output (given an input argument).
char [][] strings;
void main(char[][] args)
{
strings.length = 3;
strings[0] = "55";
strings[1] = args[1];
strings[2] = "teststring";
printf(strings[0] ~ "\n");
printf("\n1 --\n");
printf(strings[1] ~ " " ~ "\n");
printf("\n2 --\n");
printf(strings[1] ~ " " ~ " " ~ "\n");
printf("\n3 --\n");
printf(strings[1] ~ " " ~ " " ~ " " ~ "\n");
printf("\n4 --\n");
printf(strings[0] ~ "\n");
printf(strings[1] ~ " " ~ " " ~ "\n");
printf("\n5 --\n");
printf(strings[2] ~ "\n");
printf(strings[1] ~ " " ~ " " ~ "\n");
}
OUTPUT:
C:\projects\code\foo>chararrtest2.exe chararrtest.d
55
1 --
chararrtest.d
2 --
chararrtest.d
chararrtest.d
3 --
chararrtest.d
4 --
55
chararrtest.d
55
5 --
teststring
chararrtest.d
teststring
What's happening? Well first off, as long as strings[1] isn't assigned the
input
argument, nothing strange happens. Also when printf'ing just the string
literal
entries: nothing strange. Just printf'ing the args entry of strings; nothing
strange
happens. But when the printf takes the following as input:
strings[1] ~ " " ~ " " ~ "\n"
then the previous entry in strings printed using printf is printed on the
next line.
If the printf input is one of these:
strings[1] ~ " " ~ "\n"
strings[1] ~ " " ~ "" ~ "\n"
strings[1] ~ " " ~ " "
strings[1] ~ " " ~ " " ~ " " ~ "\n"
then nothing strange happens. Having those two spaces interspersed between
other entries from strings also leads to the same symptoms. Is this a C
string
problem somehow? Must I format my printfs better? In any case; this is an
incredibly hard to debug bug. Please help.
Lars Ivar Igesund
Is this a C strings case
Oct 29 2003
The problem you're having is that the first argument to printf() must be a zero-terminated string. char[] strings in D are not 0 terminated unless you specifically append a 0.
Oct 30 2003
*Blush* Thanks Lars Ivar Igesund "Walter" <walter digitalmars.com> wrote in message news:bnru8u$25sm$3 digitaldaemon.com...The problem you're having is that the first argument to printf() must be a zero-terminated string. char[] strings in D are not 0 terminated unlessyouspecifically append a 0.
Oct 30 2003








"Lars Ivar Igesund" <larsivi stud.ntnu.no>