0

Hi,

I am trying to print the values in enum. Here is the code:

#include<stdio.h>

int main(int argc , char* argv[])
{
char played[] = "This old man, he played ";
int i=0;
enum days{one,two,three,four,five,six,seven,eight,nine,ten};
 enum days d;
for(i=0;i<10;i++)
	{
printf("%s %s\n ",played,d);
	}
return 0;
}

Can Anyone help how to print the values.
I want to print like:
This old man,he played one
This old man,he played two
This old man,he played three
This old man,he played four

and so on.

2
Contributors
3
Replies
6
Views
5 Years
Discussion Span
Last Post by Narue
0

Enumerations constants are symbolic constants representing integral values. If you want the string representation of the symbol, you must create it manually:

#include<stdio.h>

int main(void)
{
    enum days { 
        one, two, three, four, five,
        six, seven, eight, nine, ten 
    };
    const char *days_str[] = {
        "one", "two", "three", "four", "five",
        "six", "seven", "eight", "nine", "ten"
    };
    int i;
    
    for (i = one; i <= ten; i++)
        printf("This old man, he played %s\n", days_str[i]);
    
    return 0;
}

One issue with this particular approach is that enumerations need not be consecutive values:

enum days { 
    one = 23, two = 11, three = 6, four = 2, five = 199,
    six = 42, seven = 0, eight /* = 1 */, nine /* = 2 */, ten = 17
};

But presumably if you know that, you won't try to do something stupid with a parallel array of strings. ;)

0

Hi,

Thanks for the reply.I tried doing something like this:

#include<stdio.h>
#include<string.h>


int main()
{
    char common1[] ="Knick-knack paddywhack, give your dog a bone";
    char com[] ="This old man came rolling home";
    char played[] = "This old man, he played ";
    char ply[50];
    strcpy(ply,played);

    int i=0;

     char *days[10]={"one","two","three","four","five","six","seven","eight","nine","ten"};
    printf("************** %s \n \n",com);
    for(i=0;i<10;i++)
        {   
    printf("%s\n ",strcat(played,days[i]));
    printf("%s\n ",common1);
    fflush(stdout);
    printf("%s \n \n",com);
    strcpy(played,ply);

        }
return 0;


}

But I dont know why I am not getting correct values for String "Com". It is giving garbage value.

It prints like this:

This old man, he played one
 Knick-knack paddywhack, give your dog a bone
 ne

This old man, he played two
 Knick-knack paddywhack, give your dog a bone
 wo

This old man, he played three
 Knick-knack paddywhack, give your dog a bone
 hree

This old man, he played four
 Knick-knack paddywhack, give your dog a bone
 our

Am I doing something wrong??

Thanks.

Edited by mike_2000_17: Fixed formatting

0

You're playing dangerous games with strcpy(), and it's manifesting as string corruption. Why not simply do this?

#include <stdio.h>
#include <string.h>

int main()
{
    char common1[] ="Knick-knack paddywhack, give your dog a bone";
    char com[] ="This old man came rolling home";
    char played[] = "This old man, he played ";
    int i=0;

    char *days[10]= {"one","two","three","four","five","six","seven","eight","nine","ten"};
    
    printf("************** %s\n\n",com);
    
    for(i=0; i<10; i++) {
        printf("%s%s\n", played, days[i]);
        printf("%s\n",common1);
        printf("%s\n\n",com);
    }
    
    return 0;
}
This article has been dead for over six months. Start a new discussion instead.
Please be thoughtful and detailed and be sure to adhere to our posting rules.