We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you a podcast all about Citrix Workspace, moving to the cloud, and analytics & intelligence. Episode 2 coming soon!Listen Now

x

address and value of pointer problem.

calprcr
calprcr asked
on
Medium Priority
227 Views
Last Modified: 2010-04-10
hi there,

I wrote this file:

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

class Date
{
 private:
       int month;
   int day;
   int year;
   char *mn;
   char *dy;
   char *yr;
 public:
       Date(int x, int y, int z);
   Date(char *dt);
   void PrintDate(); //print the date with format: 11-09-1997.
};

Date::Date(int x, int y, int z)
{
      month = x;
   day = y;
   year = z;
}

Date::Date(char *dt)
{
   mn = strtok(dt, " ,");
   dy = strtok(NULL, " ,");
   yr = strtok(NULL, " ,");

//after strtok:
   if (mn == "Jan")
      mn = "1";  //if mn is str Jan,
   else if (mn == "Nov")
         mn = "11";
   else
         mn == "13";

   month = atoi(mn);

   day = atoi(dy);
   year = atoi(yr);

}

void Date::PrintDate()
{
      cout << month << '-'        << day << '-'  << year;
}

int main(void)
{
      Date date1(11, 9, 1997);
   cout << "date1 = ";
   date1.PrintDate();
   cout << '\n';
   Date date2("Jan 9,1997");
   cout << "date2 = ";
   date2.PrintDate();
   cout << '\n';
   //Date date3("11/09/1997");
   //cout << "date3 = ";
   //date2.PrintDate();
   
   return 0;
}

the output is
11-9-1997
0-9-1997

If I put in the //month = atoi(mn);
the output will be
11-9-1997
101994-9-1997

How can I print out like this
11-9-1997
11-9-1997
Here is what my thinking routine:
I strtol the string: "Nov 9,1997"
mn will be Nov
dy will be 9
yr will be 1997

but for some reasons I can't make the output like 11-9-97 instead of Nov-9-1997 which I can print easily.

any way to solve this?

Thank you
Comment
Watch Question

Commented:
Hi calprcr,

Your code looks fine except for the way you are comparing strings

Note that the following will not do what you expected
    if (mn == "Jan")

The correct way to compare strings is
    if (strcmp(mn, "Jan") == 0) ...

Please change all your above string compares with the above code & it should then work fine

Hope this helps

Wilfred

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
Ah, that is right.
perfect!
Thanks a lot


Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.