I have this function for reading input using `getch()` ```c char *TypingFunction(int min_ascii, int

I have this function for reading input using getch()
char *TypingFunction(int min_ascii, int max_ascii, int max_len)
{
int chr = 0, index = 0;
char *num_str = (char *)malloc(max_len) + 1;

memset(num_str, 0, max_len); // Clear string
while (chr != 13) // Loop while enter isn't pressed
{
chr = getch();
if (chr == 27)
{
break;
}
if (chr == 8) // Backspace
{
if (index > 0)
{
num_str[index--] = '\0';
printf("\b \b");
}
continue;
}

if (chr == 0xE0)
{
chr = getch();
switch (chr)
{
case 75:
if (index > 0)
{
putchar('\b');
index--;
}
break;
case 77:
if (index < max_len)
{
printf("%c", num_str[index]);

index++;
}
break;
default:
break;
}
continue;
}
if (chr >= min_ascii && chr <= max_ascii && chr != 0) // Check if character is a between the range
{
if (strlen(num_str) >= max_len && index >= max_len) // Check if max length is reached
{
putchar('\a');
}
else
{
num_str[index++] = chr;
putchar(chr);
}
}
}
return num_str;
}
char *TypingFunction(int min_ascii, int max_ascii, int max_len)
{
int chr = 0, index = 0;
char *num_str = (char *)malloc(max_len) + 1;

memset(num_str, 0, max_len); // Clear string
while (chr != 13) // Loop while enter isn't pressed
{
chr = getch();
if (chr == 27)
{
break;
}
if (chr == 8) // Backspace
{
if (index > 0)
{
num_str[index--] = '\0';
printf("\b \b");
}
continue;
}

if (chr == 0xE0)
{
chr = getch();
switch (chr)
{
case 75:
if (index > 0)
{
putchar('\b');
index--;
}
break;
case 77:
if (index < max_len)
{
printf("%c", num_str[index]);

index++;
}
break;
default:
break;
}
continue;
}
if (chr >= min_ascii && chr <= max_ascii && chr != 0) // Check if character is a between the range
{
if (strlen(num_str) >= max_len && index >= max_len) // Check if max length is reached
{
putchar('\a');
}
else
{
num_str[index++] = chr;
putchar(chr);
}
}
}
return num_str;
}
0 Replies
No replies yetBe the first to reply to this messageJoin

Did you find this page helpful?