я ни фига не разбираюсь в строках, так что будем все по порядку делать

функция так получиться?

Код
void getchars(char a[])
{
  char c;
  for(int i=0; i<maxline && (c=getchar())!='\n';i++)
  {
    if(a[i]>='0'&&a[i]<='9'||a[i]=' '||a[i]='\n')
    *(a+i)=c;
  }
  *(a+i)='\0';
}


что такое *(a+i)=c; и *(a+i)='\0'; ?