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);
}
myFile.close();
return 0;
}
--- End hello.d
March 20, 2003
Re: Errors in simple program.
madamephreaker@hotmail.com wrote:
> printf("%s\n", input);

Use "%.*s\n".
March 21, 2003
Re: Errors in simple program.
In article <b5dglk$28cu$1@digitaldaemon.com>, Burton Radons
says...
>
>madamephreaker@hotmail.com wrote:
>> printf("%s\n", input);
>
>Use
"%.*s\n".
>

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$1@digitaldaemon.com>, madamephreaker@hotmail.com
says...
>
>In article <b5dglk$28cu$1@digitaldaemon.com>, Burton
Radons
>says...
>>
>>madamephreaker@hotmail.com wrote:
>>> printf("%s\n",
input);
>>
>>Use
>"%.*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.
<madamephreaker@hotmail.com> wrote in message
news:b5dm68$2c4e$1@digitaldaemon.com...
>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