2013-11-24 6 views
5

क्या यह scanf एक निर्धारित डेटा प्रकार के लिए संभव है?सी - इनपुट प्रकार प्राप्त करना

#include <stdio.h> 
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 पर सेट किया क्योंकि जीसीसी ने मुझे बताया कि यह एक हस्ताक्षरित पूर्णांक था।

+2

क्यों मुख्य() बिना किसी प्रकार के? –

+2

आपका प्रारूप विनिर्देशक ठीक है। आपको 'stringy' के पते को 'scanf' में पास करने की आवश्यकता है। यानी 'स्कैनफ ("% u", और स्ट्रिंग) ' – simonc

+0

एएएएएएएचएच आपको धन्यवाद सिमोनक, मैं बस एम्परसैंड भूल गया था। धन्यवाद। – Mathias

उत्तर

2

आपके द्वारा लिखे गए कोड को काम करना चाहिए, लेकिन जिस तरह से आप इरादा नहीं चाहते हैं, वास्तव में enum संकलन के बाद पूर्णांक के रूप में threated हैं और आपके "जेन, feb, mar, apr, मई की ऑब्जेक्ट फ़ाइल में कोई निशान नहीं रह सकता है , जून, जुलाई, अग, सितं, okt, नवं, दिसं ", इस कारण के लिए अपने कार्यक्रम सिर्फ scanf के साथ कमांड लाइन से एक अहस्ताक्षरित संख्या पार्स करके printf के बाद एक ही नंबर देता है .. आप शायद इस

#include <stdio.h> 
#include <string.h> 
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

ठीक है, असल में मैंने प्रोग्राम को enums का परीक्षण करने के लिए बनाया है, लेकिन आप सही थे, यह इरादे से काम नहीं करता था। – Mathias

+0

तो, उसे जवाब क्यों न दें? – Mawg

संबंधित मुद्दे