/*Hello, I am to create a program that gets a character and if it is uppercase, convert it to lowercase, if it is numeric print an error. I wrote the following code but my problem is that when I ask the user if he/she would like to quit, and I enter 'N' or 'n' the program does not get out of the while loop when it is suppose to. What am I doing wrong? Any help would be appreciated. Thanks in advanced.

#include<stdio.h>
#include<conio.h>
void toLowerCase(char);
char ch;
int main (void)
{
	char ans;
	do
	{
	char ch;
	char choice;
	printf("\nPlease input a character then press enter\n");
	ch = getche();

	if ( ch >='A' && ch <='Z' )
		choice = 'U';
	if ( ch >= '0' && ch <= '9' )
		choice = 'N';
	if ( ch >= 'a' && ch <='z' )
		choice = 'L';

	switch(choice)
	{
	case 'U':
		printf("\nYou inputted %c", ch);
		printf("\n!!!Upper Case character inputted!!!\n");
		printf("\n\nThe program will now convert this to lowercase\n");
		toLowerCase(ch);
		break;

	case 'N':
		printf("\nYou inputted %c", ch);
		printf("\n!!!Error: Numeric value inputted!!!\n");
		break;

	case 'L':
		printf("\nYou inputted %c", ch);
		break;
	}

/* Below is the problem that I am facing. It does not get out of the while loop if I enter 'n' or 'N'*/
	printf("\nWould you like to input another character? (y/n) : ");
	ans = getche();
	printf("\n");
}while ( ans != 'n' || ans != 'N' );
	
	return 0;
}

void toLowerCase(char ch)
{
	ch = ch+32;
	printf("Converted value is %c", ch);

}

Edited 6 Years Ago by WaltP: Added CODE Tags

try this,

printf ("\n\n\nWould you like to input another character? (y/n): ");
ans=getche();
{
if (ans=='y' || ans=='Y')
main ();
}
{
if (ans=='n' || ans=='N')
exit ();
}

Edited 6 Years Ago by Xufyan: n/a

Even though you technically can, NEVER call main(), it is not intended to be a recursive function.

A loop, specifically a while loop in this case, is the correct way to do it. The issue is that his conditional is not written correctly, as WaltP pointed out.

This article has been dead for over six months. Start a new discussion instead.