【C】関数から文字列を返す

Cでは、関数から文字列をうまく返せないので、引数として返してやる。
ある文字列を渡して、ある文字列を返す場合。

int read_string(char *varname, char *var)
{
  char *tok;

  tok = func(varname);
  strcpy(var, tok);

  return 0;
}

varnameを渡して、varを返す。呼び出し側では、varname、varは、
char var[1001] 
などで宣言。