You can use Vect_get_point_in_area and then write_att.

See code in v.alabel:

    label = atoi (value->answer);
    for (i = 1 ; i <= Map.n_areas ; i++)
    {
        if (0 != Map.Area[i].att)
            continue;
        ret = Vect_get_point_in_area (&Map, i, &X, &Y);

        if (ret<0)
        {
            fprintf (stderr, "****  Could not label area %d\n", i);
            continue;
        }

        write_att (afp, 'A', X, Y, label);
        if (incr->answer)
            label++;
        cnt++;
    }


- Bill

