From: "(e-mail address removed)" <
[email protected]>
Subject: Re: Comparison between "Pointer and Integer"
Newsgroups: comp.lang.c
Date: 27 May 2007 15:00:04 -0700
Organization:
http://groups.google.com
I'm trying to compare between pointer and integer in an "IF" statement
if(patient[index].id != NULL){
}
Why would you want to compare a pointer and an integer?
What is "id"? If it's a pointer, the above should work. If it's an
integer, comparing it to NULL makes no sense.
It's helpful to post a small, complete program that illustrates your
problem. If you're having a compilation program, show us the exact
error message your compiler gives you. Otherise, your sample should
be compilable by itself.
ok..
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAXPATIENTS 20
struct details {
int id;
char forename[20];
char initial;
char surname[20];
int day_of_entry;
int max_wait;
};
//Lists individual patient information -Work in Progress
"//" comments are not recommended on Usenet. They're not legal in C90,
and they can create syntax errors when Usenet software causes long lines
to wrap around. If a long "/* ... */" comment wraps around to two
lines, it's still a valid comment.
int list_patient(int index){
int time_left = 0;
int x = 0;
int i;
//Should check if index points to a record,
//Or else it should return -1!!
if( patient[index].id != NULL){
Here's your problem. You didn't show us your compiler's error
message, as I requested, but here's what I got:
c.c: In function `list_patient':
c.c:25: error: `patient' undeclared (first use in this function)
That's not the error you described originally. Assuming that
"patient" is supposed to be either an array of "struct details", or a
pointer to "struct details", the member "patent[index].id" is of type
int.
NULL is a null pointer constant. Why are you trying to compare an int
value to a null pointer constant?
(Incidentally, if your compiler complained about comparing an integer
to a pointer, you're lucky. A legal definition of the NULL macro is
0; that's both an integer expression and a null pointer constant. If
your implementation chose to use that definition, your compiler
wouldn't have diagnosed the error. See section 5 of the comp.lang.c
FAQ, <
http://www.c-faq.com/>.)
I'm guessing that you want "id" to be able to hold some distinguished
value that means "this structure does not refer to a patient; ignore
it". If "id" were a pointer, using a null pointer would make sense.
But there is built-in null value for integer types.
You probably want to define some specific value to serve this purpose.
0 might be a good choice, unless 0 is a valid id. -1 might also be a
good choice. In either case, I suggest defining symbolic constant
rather than using "magic numbers" in your code, something like:
#define NOT_A_PATIENT (-1)
...
if (patient[index].id != NOT_A_PATIENT) {
...
This is assuming that a distinguished id value is the way to handle
this; it may not be.