Click here to Skip to main content
11,796,631 members (72,961 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: C
#define MONTHS 13
int main(void)
    char m[MONTHS] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    int i;
    print("%s%13s", "Input", "output");
    for(i=1 ; i<MONTHS ; i++){
        printf("%7c%13c", i, m);
    return 0;

This is my coding and may i know is it the declaration of the variable char wrong?
Posted 26-Apr-11 9:34am
Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Try something like this:

#define MONTHS 12

char* m[MONTHS] =
"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
int i;
for(i=0 ; i<MONTHS ; i++)
    printf("%d: %s\n", i + 1, *(m + i));

Note how I've created an array of char* (and not an array of char).
Jayfam at 26-Apr-11 15:43pm
can u modify my coding made it works, because i hope can using my coding rather copy other people coding
Nishant Sivakumar at 26-Apr-11 15:44pm
I just changed your existing code. I did re-format it, that's all. But it is indeed your own code :-)
Albert Holguin at 26-Apr-11 16:14pm
people here help you identify the problem, its up to you to fix your own code, don't abuse the help others are providing
Tarakeshwar Reddy at 26-Apr-11 15:46pm
My 5
Nishant Sivakumar at 26-Apr-11 15:48pm
Jayfam at 26-Apr-11 15:46pm
char* is? i not understand with char*, can you further explain?
Nishant Sivakumar at 26-Apr-11 15:49pm
A char represents a single character. C does not have a string type. In C, a string is represented by a char*. Pointer to character.
Jayfam at 26-Apr-11 15:53pm
i got a error of old-style parameter declarations in prototyped function definition
Nishant Sivakumar at 26-Apr-11 15:56pm
I tried that code in VC++ 2010 and compiled as "C" (not C++). Code compiles fine.
Albert Holguin at 26-Apr-11 16:16pm
this may be the print() instead of printf() type-o
Espen Harlinn at 26-Apr-11 15:58pm
Nice reply, 5ed!
Nishant Sivakumar at 26-Apr-11 16:03pm
Thanks Espen!
Jayfam at 26-Apr-11 16:12pm
thanks for the help, i finally understand and the problem solve
Nishant Sivakumar at 26-Apr-11 16:14pm
Glad to hear that, and you are most welcome.
Albert Holguin at 26-Apr-11 16:17pm
accept a solution to close the question
Jayfam at 26-Apr-11 16:18pm
accept already
Rate this: bad
Please Sign up or sign in to vote.

Solution 3

It is wrong because you declare an array of characters and try to initialize it with an array of (const) character pointers. The right code would be:
const char * m[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};

(you don't really need to define MONTHS).
Albert Holguin at 26-Apr-11 16:13pm
my 5
CPallini at 26-Apr-11 16:37pm
Thank you.
Jayfam at 26-Apr-11 16:16pm
CPallini at 26-Apr-11 16:37pm
You are welcome.
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

How about:

char *m[MONTHS] = {"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    int i;
    printf("%s%13s\n", "Input", "output");
    for(i=1 ; i<xMONTHS ; i++){
        printf("%7d%13s\n", i, m[i]);

1. In simple terms a string is a pointer to a char (OK I know that oversimplifies it, but the idea's roughly right) - so you need to get your declaration of 'm' right.

2. Arrays are zero based - so to use indices 1 to 12, you need the zero'th element as a dummy.

3. Your format strings need to reflect the fact that you are trying to print an integer and a string - not 2 chars.

4. You can't just print 'm' - you need to specify the element of the array.

5. New line characters in the format strings will make your output more readable - they need to be explicit and are not implied.

6. You might usefully get hold of a copy of Kernighan & Ritchie ([^]) which (at least when I got it) was the Bible for learning C (and any C-like) language.

7. Depending on your development environment you might also consider ditching functions like printf for the string safe counterparts like StringCchPrintf ([^]) that offer some protection against ubiquitous buffer overrun bugs beloved of hackers!
Jayfam at 26-Apr-11 16:12pm
thanks for the help, i finally understand and the problem solve

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Maciej Los 505
1 Abhinav S 417
2 OriginalGriff 360
3 CPallini 285
4 KrunalRohit 249
0 OriginalGriff 2,012
1 Maciej Los 1,725
2 KrunalRohit 1,310
3 CPallini 1,055
4 ppolymorphe 858

Advertise | Privacy | Mobile
Web02 | 2.8.151002.1 | Last Updated 26 Apr 2011
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100