Cannot implicitly convert expression (&sbuf) of type char [1024] to IOREQ *
Anders S via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Nov 30 02:20:35 PST 2016
On Wednesday, 30 November 2016 at 07:16:38 UTC, Anders S wrote:
> On Tuesday, 29 November 2016 at 23:33:19 UTC, Ali Çehreli wrote:
>> On 11/29/2016 07:30 AM, Anders S wrote:
....
>> Ali
>
>
> Thanks you all guys, and the cast (IOREQ *) ... did the trick!!
> I'll have a look at your other comments aswell on struct a.s.o.
> /anders
Hi again, still have problem. It works when using plain text but
not like this:
(Hope you can identify my errors ;) )
import std.range, std.stdio, std.conv;
import core.stdc.string;
import core.stdc.stdio;
import core.sys.posix.sys.stat;
import core.sys.posix.unistd;
import core.sys.posix.fcntl;
import core.sys.posix.sys.stat;
extern (C) uint read(int, void *, uint);
extern (C) uint write(int, void *, ulong);
struct IOREQ {
short fc; /* function code */
short rs; /* return code */
int size; /* size of this request, including */
short src; /* source */
int [1] argv; /* list of arguments */
};
void main(string[] args) {
//f;
int fd = -1;
IOREQ *io;
fd = mkfifo("/Users/anders/pipes/8556",666 );
char [1024]rbuf;
char [1024]sbuf;
sbuf = "You must use the cast keyword, the pointer to
first element of an array is .ptr, and I think you meant sbuf:
io = cast(IOREQ *)sbuf.ptr;";
io = cast (IOREQ *) sbuf;
io.fc = 501;
io.rs = 1234;
io.src = 8556;
writeln("\nio.fc :", io.fc);
writeln("io.rs :", io.rs);
writeln("\nio.src :", io.src);
writeln ("\nio :",io);
writeln("Skrev ", write(fd, cast (void*) sbuf,
sbuf.length));
writeln("läste ", read(fd, cast (void*) rbuf,
sbuf.length));
writeln("\nrbuf :", rbuf);
io = cast(IOREQ *) rbuf;
writeln("\nrio.fc :", io.fc);
writeln("\nrio.rs :", io.rs);
writeln("\nrio.src :", io.src);
//unlink("/Users/anders/pipes/8556");
}
More information about the Digitalmars-d-learn
mailing list