Вместо = нужно == поставить, но проблема не в этом, проблема похоже в *(a+i).
Нашёл ещё пару косяков, например, если ввести строчку длиной ровно в maxlenth, будет ошибка, есть и другие, но мне легче было переписать.
Код
void getchars(char a[])
{
char c;
for(int i=0; i<maxline-1 && (c=getchar())!='\n';i++)
{
if(((c>='0')&&(c<='9')) || (a[i]==' ')) a[i]=c;
else break;
}
a[i]='\0';
}
{
char c;
for(int i=0; i<maxline-1 && (c=getchar())!='\n';i++)
{
if(((c>='0')&&(c<='9')) || (a[i]==' ')) a[i]=c;
else break;
}
a[i]='\0';
}
Так, он будет прерывать ввод, когда встретит любой символ, отличный от цифры или пробела, ещё в моём варианте не будет выхода за границы массива.