Я хочу найти функцию или альтернативу, которая могла бы заменить нестандартную функцию getch () языка C. Я хочу помочь, если какая-либо функция, которая может заменить функцию getch () из кода ниже или соответствующую альтернативу.
Я делаю это, так как мой колледж попросил меня не использовать заголовочный файл conio.h в моих C программах.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i=0, j=0, memAlloc=1;
char *p, *q, a;
p=(char *)calloc(1, sizeof(char));
while(1)
{
a=getch(); //getch() function
if(a!='\b'&&a!='\r')
{
p[i]=a;
++i;
printf("%c", a);
memAlloc++;
p=realloc(p, memAlloc*sizeof(char));
}
if(a=='\b'&&i>=1)
{
printf("\b \b");
--i;
}
if(a=='\r')
{
p[i]='\0';
break;
}
}
printf("\n");
for (i=0; p[i]!='\0'; i++)
printf("%c", p[i]);
//Storing a string of only alphabets into a new dynamic array
q=(char *)calloc(1, sizeof(char));
memAlloc=1;
for (i=0; p[i]!='\0'; i++)
{
if (isalpha(p[I])) //Checking for alphabet
if(isupper(p[i]))
{
q[j]=p[i]+32; //If uppercase alphabet convert it to lowercase
memAlloc++;
q=realloc(q, memAlloc*sizeof(char));
j++;
}
else
{
q[j]=p[i];
memAlloc++;
q=realloc(q, memAlloc*sizeof(char));
j++;
}
}
q[j]='\0'; //Adding a null character to the end of the string
free(p);
printf("\n");
for (i=0; q[i]!='\0'; i++)
printf("%c", q[i]);
}
Вот объяснение программы.
Программа примет строку ввода пользователя неизвестного размера и сохранит его в массив Dynami c. Пользователь будет продолжать вводить символы в одной строке до тех пор, пока не нажмет клавишу ввода, после чего вся строка будет сохранена в динамическом массиве c. Затем программа удаляет все символы, кроме алфавитов и преобразует прописные буквы в строчные, а затем сохраняет обновленную строку в другой динамический массив c.