View mode: basic / threaded / horizontal-split · Log in · Help
March 20, 2003
Errors in simple program.
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
Re: Errors in simple program. wrote:
> printf("%s\n", input);

Use "%.*s\n".
March 21, 2003
Re: Errors in simple program.
In article <b5dglk$28cu$>, Burton Radons
> 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
Re: Errors in simple program.
In article <b5dm68$2c4e$>,
>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
Re: Errors in simple program.
<> wrote in message
>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
Top | Discussion index | About this forum | D home