delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2013/08/05/06:30:07

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: Martin Str|mberg <ams AT dexter DOT ludd DOT ltu DOT se>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: A question about the ferror behavior
Date: Mon, 5 Aug 2013 10:16:30 +0000 (UTC)
Organization: Aioe.org NNTP Server
Lines: 49
Message-ID: <ktnu1u$ack$1@speranza.aioe.org>
References: <51E200D7 DOT 1050800 AT gmx DOT de>
NNTP-Posting-Host: ftvAZcRvOze4hbePWaim7g.user.speranza.aioe.org
X-Complaints-To: abuse AT aioe DOT org
User-Agent: tin/1.4.7-20030322 ("Suggestions") (UNIX) (SunOS/5.9 (sun4u))
X-Notice: Filtered by postfilter v. 0.8.2
Bytes: 1708
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de> wrote:
> Please inspect the code snippet below:

> #include <stdio.h>

> int main(void)
> {
>    char buffer[1024];
>    FILE *f = fopen("foobar.txt", "w");

Note nNot "r+" nor "w+".

>    clearerr(f);

>    if (fgets(buffer, sizeof(buffer), f) == NULL)
>      printf("EOF encountered before data\n");

>    printf("ferror = %s\n", ferror(f) ? "TRUE" : "FALSE");
>    printf("feof = %s\n", feof(f) ? "TRUE" : "FALSE");

>    return 0;
> }


> If this code is compiled with djdev203 or djdev204 I get
> the following output:

> EOF encountered before data
> ferror = FALSE
> feof = FALSE


> If I compile the code on linux I get the following
> output:

> EOF encountered before data
> ferror = TRUE
> feof = FALSE


It could be argued that there are no EOF indication for files opened
only for writing, hence pointless calling ferror() or feof() on such
FILE * variables...

I don't know what the standard says about that.


-- 
MartinS

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019