नया यहाँ और मेरे पास एक बहुत ही सरल सवाल है। मैं सी में एक साधारण प्रोग्राम बना रहा हूं जिसके लिए उपयोगकर्ता को एक char के साथ क्या करना है, इस विकल्प को दर्ज करने की आवश्यकता है। परिणाम दर्ज करने के बाद, कार्यक्रम मेनू पर वापस चला जाता है। हालांकि ऐसा लगता है कि कुछ प्रकार के भूत इनपुट लेते हैं जैसे कि चार के पास कुछ अज्ञात मूल्य है। मुझे char वापस अपने डिफ़ॉल्ट स्थिति में सेट करने की आवश्यकता है।सी - उपयोगकर्ता एकल चार इनपुट अजीब परिणाम
कोड:
/* display menu for user */
void menu() {
printf("\n- - - Phone Book Database - - -\n");
printf("\nSelect an action:\n\n");
printf("\tc:\tCreate a database entry.\n");
printf("\ts:\tSearch the database entries.\n");
printf("\td:\tDelete a database entry.\n");
printf("\tq:\tQuit program.\n\n");
printf("Enter choice: ");
menu_choice = getchar();
if(menu_choice != 'c' && menu_choice != 's'
&& menu_choice != 'd' && menu_choice != 'q') {
printf("\n\n\tInvalid choice.\n");
menu();
}
//fflush(stdin);
}
यहाँ एक उदाहरण उत्पादन होता है:
- - - Phone Book Database - - -
Select an action:
c: Create a database entry.
s: Search the database entries.
d: Delete a database entry.
q: Quit program.
Enter choice: c
Enter name: test
Enter address: test
Enter number: 3
- - - Phone Book Database - - -
Select an action:
c: Create a database entry.
s: Search the database entries.
d: Delete a database entry.
q: Quit program.
Enter choice:
Invalid choice.
- - - Phone Book Database - - -
Select an action:
c: Create a database entry.
s: Search the database entries.
d: Delete a database entry.
q: Quit program.
Enter choice: q
ग के रूप में एक इनपुट
/* creates a new record in array */
void create_record() {
char name[MAX];
char address[MAX];
int number;
rec_num++; /* add 1 to marker for record placement */
printf("\nEnter name: ");
scanf("%s", name);
printf("\nEnter address: ");
scanf("%s", address);
printf("\nEnter number: ");
scanf("%d", &number);
strcpy(record[rec_num].name, name);
strcpy(record[rec_num].address, address);
record[rec_num].number = number;
}
'सी' चुना जाने पर आप क्या करते हैं? – Xymostech
@Xymostech जब सी चुना जाता है तो यह डेटाबेस प्रविष्टि बनाने के लिए एक और फ़ंक्शन कॉल करता है। मैं प्रत्येक क्षेत्र के लिए structs की एक सरणी का उपयोग करें। यह ठीक काम करता है, लेकिन मेनू() फ़ंक्शन पर वापस जाने पर यह कुछ जवाब देता है और "अमान्य विकल्प" प्रस्तुत करता है। जैसा कि आप देख सकते हैं। –
ऐसा लगता है कि अन्य फ़ंक्शन इनपुट को सही तरीके से नहीं ले रहा है, इसलिए बफर में अतिरिक्त इनपुट शेष है और जब आप मेनू पर वापस आते हैं, तो कुछ पहले ही चुना जा चुका है। क्या आप उस फ़ंक्शन के लिए कोड देख सकते हैं जिसके बारे में आपने बात की थी? – Xymostech