सी - इनपुट प्रकार Enum प्राप्त करना

क्या एक परिभाषित डेटा प्रकार scanf करना संभव है?

#include 
enum numberByMonth {jan=1,feb,mar,apr,may,jun,jul,aug,sep,okt,nov,dec};
main(){
printf("\n");
printf("Get Number By Month (type first 3 letters): ");
enum numberByMonth stringy;
scanf("%u",stringy);
printf("Your month number is: %u",stringy);
}

क्या कोई मेरी मदद कर सकता है कि मुझे किस डेटाटाइप के लिए स्कैन करना चाहिए? मैंने इसे% u पर सेट किया क्योंकि जीसीसी ने मुझे बताया कि यह एक हस्ताक्षरित पूर्णांक था।

0
जोड़ा संपादित
विचारों: 1
मुख्य() बिना किसी प्रकार के?
जोड़ा लेखक Kevin Dong, स्रोत
एएएएएएएचएच आपको धन्यवाद सिमोनक, मैं बस एम्परसैंड भूल गया। धन्यवाद।
जोड़ा लेखक Mathias, स्रोत
आपका प्रारूप विनिर्देशक ठीक है। आपको stringy के पते को scanf में पास करने की आवश्यकता है। यानी scanf ("% u", और स्ट्रिंग)
जोड़ा लेखक simonc, स्रोत
@simonc आपको शायद इसे एक उत्तर के रूप में पोस्ट करना चाहिए।
जोड़ा लेखक Étienne, स्रोत

1 उत्तर

#include 
#include 
char* months[] = {"jan","feb","mar","apr","may","jun","jul","aug","sep","okt","nov","dec"};

int main()
{
    printf("\n");
    printf("Get Number By Month (type first 3 letters): ");
    char str[3];
    scanf("%s",str);
    int i;
    for(i=0; i<12; i++)
    {
        if(!strcmp(str,months[i]))
        {
            printf("Your month number is: %d",i+1);
        }
    }
    return 0;
}

जो enums का उपयोग नहीं करता है, लेकिन यह उचित है क्योंकि एनम का उपयोग दक्षता को कम किए बिना स्रोत पठनीयता को संरक्षित करने के लिए किया जाता है और इस कारण से पूर्णांक के रूप में नहीं होते हैं, इसलिए यदि आप करना चाहते हैं तो स्ट्रिंग पार्सिंग है, तो आपको तारों का उपयोग करना होगा क्योंकि आपको "जन", "feb" आदि के साथ उपयोगकर्ता इनपुट की तुलना करना है ..

0
जोड़ा
तो, उसे जवाब क्यों न दें?
जोड़ा लेखक Mawg, स्रोत
खैर, असल में मैंने उस कार्यक्रम को enums का परीक्षण करने के लिए बनाया है, लेकिन आप सही थे, यह इरादे से काम नहीं किया।
जोड़ा लेखक Mathias, स्रोत