Uhm, non mi pare ci sia nulla di così difficile... se chiami il punto centrale C=(cx, cy) e la "semilunghezza" del quadrato l:
  • calcola gli estremi del quadrato da stampare: UL=(cx-l, cy-l), LR=(cx+l, cy+l) (UL e LR stanno per "upper-left" e "lower-right");
  • "clippa" i valori così calcolati rispetto alle dimensioni effettive dell'array (ovvero, se una qualunque delle coordinate così ottenute è negativa la imposti a zero, se una delle x supera o è uguale alla larghezza la imposti alla larghezza-1, analogamente per le y);
  • stampa i valori che ti interessano con due for annidiati:
    codice:
    for(int x=ulx; x<lrx; ++x)
        for(int y=uly; y<lry; ++y)
            printf("%d", matrice[y][x]);


--- edit --- per matrice toroidale intendi che è periodica? in tal caso, invece di clippare gli estremi devi prenderli in modulo rispetto alla larghezza (per le x) e all'altezza (per le y). Nota che, dato che in C non è definito il funzionamento dell'operatore modulo (%) per numeri negativi, la cosa migliore è ricondursi sempre ai positivi aggiungendo a tutte le x la larghezza e a tutte le y l'altezza prima di effettuare il modulo.