🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #4716

Evaluations, Comparrisons, fopen() WIN/DOS

#4716
From: Darin E. Sease
Date: Mon, 29 Jan 1996 21:19
82 lines
2633 bytes
Hi I'm a little confused as to what happens
when this comparrison is made.

This is part of a windows program 16bit large model.

#include<windows.h>
#include<stdlib.h>
#include<stdio.h>

myMain()
{	FILE *theFile;

	theFile = fopen( "c:\\autoexec.bat", "rt" );
//-->> The compare:
	if ( theFile != 0 )
		MessageBox( hWnd, "fopen() Succeded!", APPNAME, MB_OK
);
	else
	{
//-->> Code allways branches here... why?
		MessageBox( hWnd, "fopen() Failed!", APPNAME, MB_OK );
		PostQuitMessage( 0 );
		return( 0L );
	}

The comparrison allways branches to the failed route weather
I use "!=" or reverse it using "==".  The file does exist so
I'm at a loss.  I did get this to work when I recompiled this
snipit for DOS.

I use BC 4.0 and in the "NULL.H" file the "NULL" symbol is 
defined as 0(zero).  I first compared the "theFile" symbol 
with the "NULL" symbol, but in the watch window "NULL" was 
allways undefined so I switched to 0.

In the watch window this is what I see after the fopen().

theFile == 0: 0
theFile != 0: 1

Going by the watch window, the compare results in 1(True).
Why then does the execution advance to the 2nd half of the else.

Below is a portion of the DOS code (it's the same thing).  I get 
the same watch window results, but this branches the way I'd 
expect it to.  Also the file does open (I sent it to the screen).
It does not open with the windows code.
 
#include <stdio.h>
int main( void )
{	FILE *theFile;

	theFile = fopen( "c:\\autoexec.bat", "rt" );
	if ( theFile != 0 )
		printf("No Problem with fopen().\n");
	else
	{
-->> Code branches to here... great!
		printf("Problem with fopen().\n");
		return( 0 );
	}
	...
	return 0;
}

1. How does the compare logic work?

2. What about the watch var's, is there somthing about a FILE struct?

3. Why "with the same code" do I get different results with 
	DOS:    (success) code flows correctly file opens.
	Windows:(failure) code flows incorrectly file won't open.
	
P.S. I decided to create a new file with fopen("c:\\butoexec.bat",
"wt")(windows code).
	 the code trace said fopen() failed, but when I checked the
drive it was there.

Teach a man to fish.

Thanks
Darin
Technical Details
Message-ID: <310d3908.4601891@nntp.ix.netcom.com>
Path: arc1-ca.pugleaf.net!ix.netcom.com!netnews

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!ix.netcom.com!netnews
From: kimyatta@ix.netcom.com (Darin E. Sease)
Newsgroups: comp.std.c
Subject: Evaluations, Comparrisons, fopen() WIN/DOS
Date: Mon, 29 Jan 1996 21:19:03 GMT
Organization: Netcom
Message-ID: <310d3908.4601891@nntp.ix.netcom.com>
NNTP-Posting-Host: ix-syr1-18.ix.netcom.com
X-NETCOM-Date: Mon Jan 29 12:08:57 PM PST 1996
X-Newsreader: Forte Agent .99c/16.141