Re: Division in loop

Randi Botse <[email protected]>
Newsgroups org.kernel.vger.linux-c-programming
Message-ID <[email protected]>
Thanks Glynn for let me know that the void* pointer arithmetic is
undefined, and gcc automatically cast it to char* pointer... is this
because void* doesn't have a size? im curious when i do sizeof(void*),
my machine tell me sizeof(void*) is 4kb... i thnk when i do (void* +
1) that's means "4 kb after void*"?....

i run the code in GNOME terminal, that's means stdout connected to xterm?


On Thu, Sep 10, 2009 at 7:46 AM, Glynn Clements
<[email protected]> wrote:
>
> Randi Botse wrote:
>
>> void *buffer; /* buffer, will be allocated */
>> ...
>
>>        ret = read(fdp, buffer + bytes, stat.st_size - bytes);
>
> Pointer arithmetic on a void* is undefined. gcc allows this as an
> extension, treating void* like char*, i.e. p+i is treated as
> (void*)((char*)p+i).
>
> For portability, define buffer as a char*.
>
>>        printf("\rcompleted: %i%%", progress); /* NO OUTPUT, UNTIL LOOP ENDED */
>>        fflush(stdout);
>
>> Then i see printf() never output the message until the loop has ended...
>> 'fdp' is a file descriptor to a local file, i send it through a serial
>> connection (RS232),
>
> Try checking the return value of printf() and fflush(), and errno upon
> error.
>
> Also, what is stdout connected to? A VT? An xterm? sshd?
>
> --
> Glynn Clements <[email protected]>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.