2014-10-13 4 views
5

केस केस संवेदनशील होने के लिए मैं स्विच-केस स्टेटमेंट कैसे बना सकता हूं?मैं स्विच-केस स्टेटमेंट केस को असंवेदनशील कैसे बना सकता हूं?

#include <stdio.h> 

char choice; 
int main() 
{ 
char choice; 
printf("Will you choose A,B, or C?\n>"); 
scanf(" %c", &choice); 

switch(choice) 
{ 
    case 'A': 
     printf("The First Letter of the Alphabet"); 
     break; 
    case 'B': 
     printf("The Second Letter of the Alphabet"); 
     break; 
    case 'C': 
     printf("The Third Letter of the Alphabet"); 
     break; 
} 
} 

यह केवल बड़े अक्षरों का जवाब होगा: मैं कुछ इस तरह बनाया कहो। मैं इसे कम केस अक्षरों का जवाब कैसे दूं?

+0

लोअरकेस/अपनी पसंद अपरकेस दे सकते हैं। –

उत्तर

14

आप बस इस की जरूरत है: -

switch(choice) 
{ 
case 'A': 
case 'a': 
    printf("The First Letter of the Alphabet"); 
    break; 
case 'B': 
case 'b': 
    printf("The Second Letter of the Alphabet"); 
    break; 
case 'C': 
case 'c': 
    printf("The Third Letter of the Alphabet"); 
    break; 
} 

और इतने पर अपनी श्रृंखला जारी रखने के लिए।

असल में, यह क्या करता है कि यह तब तक नीचे तक पहुंच जाता है जब तक कि यह मामला मिलान करने वाले पहले ब्रेक स्टेटमेंट को तब तक नहीं मिला जब तक कि सामने आने वाले सभी मामलों को निष्पादित नहीं किया जाता !!!

+2

मैं इसे लिखने जा रहा था लेकिन मेरा टचपैड (लेनोवो) बुरा है। बहुत बुराई टूटा हुआ। तुम जीते। :) +1 –

+0

आपको बहुत बहुत धन्यवाद। मेरी सी सीखने की किताब ने अगली पसंद विधि पर जाने से पहले कुछ भी नहीं कहा। – Jeremy

+0

@ प्रो। फाल्कन-प्रोफेसर।, यहां वही! लेकिन, मुझे नहीं पता कि मैं दौड़ कैसे जीता। हा हा हा हा ... –

30

<ctype.h> में toupper अपरकेस करने के लिए एक चरित्र धर्मान्तरित:

#include <stdio.h> 
#include <ctype.h> 

char choice; 
int main() 
{ 
printf("Will you choose A,B, or C?\n>"); 
scanf(" %c", &choice); 

switch(toupper(choice)) // Changed line 
{ 
    case 'A': 
     printf("The First Letter of the Alphabet"); 
     break; 
    case 'B': 
     printf("The Second Letter of the Alphabet"); 
     break; 
    case 'C': 
     printf("The Third Letter of the Alphabet"); 
     break; 
} 
+1

मैं वास्तव में इस विधि को पसंद करता हूं। अधिक सुरुचिपूर्ण और कम त्रुटि प्रवण लगता है। विशेष रूप से इस मामले में जहां आप विशेष रूप से केस-असंवेदनशीलता को देख रहे हैं। – JoErNanO

+2

@ जोएरनानो, सामान्य मामले में हाँ, लेकिन यह समझना भी अच्छा है कि केस निर्माण एक-दूसरे के बाद कई 'केस' ले सकता है। मुझे दोनों जवाब पसंद हैं। यदि आप उपयोगकर्ता 'टॉपर()' हैं, तो आपको लागू होने पर, रनटाइम की सीमाओं और क्विर्क से अवगत होना चाहिए। http://stackoverflow.com/questions/12493496/c-c-utf-8-upper-lower-case-conversions यदि आप कई 'केस' का उपयोग करते हैं, तो आपको कंपाइलर की सीमाओं से अवगत होना चाहिए। उदाहरण के लिए, यह केवल एएससीआईआई स्वीकार कर सकता है। व्यापार नापसंद। :) –

+0

@ प्राफ। फाल्कन मैं बिल्कुल सहमत हूं। – JoErNanO

6

स्विच() से पहले, जोड़ें:

choice = toupper(choice); 

और अगर आप पहले से ही यह मिल गया नहीं किया है, #include <ctype.h> प्रोटोटाइप पाने के लिए ।

1

आप 2 मामलों एक के बाद एक,

switch(choice) 
{ 
case 'A': 
case 'a': 
    printf("The First Letter of the Alphabet"); 
    break; 
case 'B': 
case 'b': 
    printf("The Second Letter of the Alphabet"); 
    break; 
case 'C': 
case 'c': 
    printf("The Third Letter of the Alphabet"); 
    break; 
} 
संबंधित मुद्दे