मैंने इस कार्यक्रम को सफलता के बिना, अनुचित तरीके से काम क्यों कर रहा है, इस बारे में सोचने में घंटों बर्बाद कर दिया। यह हमेशा प्रिंट करता है "चरित्र एक विशेष प्रतीक है"।जबकि "if" के साथ लूप ठीक से काम नहीं करता है
#include <stdio.h>
int main(void)
{
char character;
printf("Please type any character and I will tell you what type it is:\n");
while(1)
{
scanf("%c", &character);
if(character >= 65 && character <= 90)
printf("The character is A-Z\n");
else if(character >= 97 && character <= 122)
printf("The character is a-z\n");
else if(character >= 48 && character <= 57)
printf("The character is 0-9\n");
else if((character >= 0 && character <= 47) ||
(character >= 58 && character <= 64) ||
(character >= 91 && character <= 96) ||
(character >= 123 && character <= 127))
printf("The character is a special symbol\n");
}
}
भागो उदाहरण
Please type any character and I will tell you what type it is:
4
The character is 0-9
The character is a special symbol
मैंने देखा है जब मैं जबकि पाश हटाना ऐसा नहीं होता है, लेकिन मुझे समझ नहीं आता क्यों, मुझे लगता है कि पाश चाहते हैं।
किसी चरित्र के साथ स्कैनफ़ का उपयोग न करें, इसके बजाय fgetc (stdin) –
@RobertLove का उपयोग क्यों करें? –
बदसूरत तरीके से यह काम करता है। fgetc (stdin) अग्रणी व्हाइटस्पेस वर्णों से पीड़ित नहीं है जैसे \ n। बेशक यह अभी भी उन्हें प्राप्त करता है, लेकिन कोई रूपांतरण नहीं करता है। http://stackoverflow.com/questions/12063879/fgetcstdin-in-a-loop-is-producing-strange-behaviour –