March 20, 2003
When I use printf in the way i'm doing now(see code) it crashes flat out. If i just do "printf(input);" it works until it gets to a blank line.

In all cases it gives "Error: Access Violation" when it crashes.

--- Begin hello.d
import c.stdio;
import stream;

int main( char[][] args )
char[] input="";
File myFile = new File(args[1]);
while( ! myFile.eof() )
input = myFile.readLine();
printf("%s\n", input);
return 0;
--- End hello.d

March 20, 2003 wrote:
> printf("%s\n", input);

Use "%.*s\n".

March 21, 2003
In article <b5dglk$28cu$>, Burton Radons says...
> wrote:
>> printf("%s\n", input);

What about the multiple lines? and when i use printf(input);
input isn't always declared? I'm assuming since result in the stream class is
a resizable array when it doesn't get anything it it it's a pointer to an array
of length zero? Thus accessing it blows up?  Why would "%.*s" fix that?

March 21, 2003
In article <b5dm68$2c4e$>, says...
>In article <b5dglk$28cu$>, Burton
>> wrote:
>>> printf("%s\n",

I just switched to using that now, and it works.
to some extent.. If the last line of the file doesn't end in a newline it spews
this out:

not enough data in stream

Although looking at it more i think dli
0.1.2 just has an old version of phobos. (I tried updating but it failed to
compile parts of phobos then)

March 21, 2003
<> wrote in message news:b5dm68$2c4e$
>Why would "%.*s" fix that?

The input[] is a dynamic array, which consists of a length field and a pointer to the data. %s expects a pointer to a null terminated string. %.*s expects two parameters, a length and a pointer, which fits perfectly with D arrays.

Top | Discussion index | About this forum | D home