Alhazred
Aug 7th 2004, 7:07 am
char * UserInput(int max) {
BOOL EndInput = TRUE;
unsigned int Count;
int Count2 = 0, Count3 = 0, cursore = 0;
char AllowedCh[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', '\0'};
char AllowedNum[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '\0'};
char *Buff;
char Current = ' ';
char provvisorio[2];
char *definitivo;
Buff = (char *) malloc((max + 1));
definitivo = (char *) malloc((max + 1));
Buff[0] = '\0';
definitivo[0] = '\0';
while(EndInput)
{
provvisorio[Count3] = getch();
definitivo = strupr(provvisorio);
definitivo[Count3 + 1] = '\0';
Current = definitivo[Count3];
switch(Current)
{
case 13: EndInput = FALSE;
Buff[Count2] = '\0';
break;
case 8: Buff[Count2] = '\0';
if(cursore > 0)
{
printf("\b \b");
Count2--;
Buff[Count2] = '\0';
cursore--;
}
break;
/*function keys exclusion*/
case(0+65): break;
case(0+66): break;
case(0+67): break;
case(0+68): break;
case(0+69): break;
case(0+70): break;
case(0+71): break;
case(0+72): break;
case(0+73): break;
case(0+74): break;
/****************/
default: if(max == 1)
{
for(Count = 0; Count < strlen(AllowedCh); Count++)
{
if(Current == AllowedCh[Count] && (Count2 < max))
{
printf("%c", Current);
Buff[Count2] = Current;
Count2++;
cursore++;
}
}
break;
}
else
{
for(Count = 0; Count < strlen(AllowedNum); Count++)
{
if(Current == AllowedNum[Count] && (Count2 < max))
{
printf("%c", Current);
Buff[Count2] = Current;
Count2++;
cursore++;
}
}
break;
}
}
}
return Buff;
} //End UserInput
I have a problem with this code, if I press F7, F8, F9, F10, pagup, home introduce valid character for input.
Well have you some suggestion about how to recognize if a function key or a char key is pressed and accept only the chars?
How to do in my code?
Example, if I press F7 it will input A. I don't want this!
BOOL EndInput = TRUE;
unsigned int Count;
int Count2 = 0, Count3 = 0, cursore = 0;
char AllowedCh[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', '\0'};
char AllowedNum[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '\0'};
char *Buff;
char Current = ' ';
char provvisorio[2];
char *definitivo;
Buff = (char *) malloc((max + 1));
definitivo = (char *) malloc((max + 1));
Buff[0] = '\0';
definitivo[0] = '\0';
while(EndInput)
{
provvisorio[Count3] = getch();
definitivo = strupr(provvisorio);
definitivo[Count3 + 1] = '\0';
Current = definitivo[Count3];
switch(Current)
{
case 13: EndInput = FALSE;
Buff[Count2] = '\0';
break;
case 8: Buff[Count2] = '\0';
if(cursore > 0)
{
printf("\b \b");
Count2--;
Buff[Count2] = '\0';
cursore--;
}
break;
/*function keys exclusion*/
case(0+65): break;
case(0+66): break;
case(0+67): break;
case(0+68): break;
case(0+69): break;
case(0+70): break;
case(0+71): break;
case(0+72): break;
case(0+73): break;
case(0+74): break;
/****************/
default: if(max == 1)
{
for(Count = 0; Count < strlen(AllowedCh); Count++)
{
if(Current == AllowedCh[Count] && (Count2 < max))
{
printf("%c", Current);
Buff[Count2] = Current;
Count2++;
cursore++;
}
}
break;
}
else
{
for(Count = 0; Count < strlen(AllowedNum); Count++)
{
if(Current == AllowedNum[Count] && (Count2 < max))
{
printf("%c", Current);
Buff[Count2] = Current;
Count2++;
cursore++;
}
}
break;
}
}
}
return Buff;
} //End UserInput
I have a problem with this code, if I press F7, F8, F9, F10, pagup, home introduce valid character for input.
Well have you some suggestion about how to recognize if a function key or a char key is pressed and accept only the chars?
How to do in my code?
Example, if I press F7 it will input A. I don't want this!