Artige greier!
Angående at det er uvant å kode i C når man er mer vant med objektbaserte språk kan jeg fint forstå det. Sitter selv og pusler med å børste støv av min C-kunnskap for tiden, sammen med å kode en liten applikasjon i Objective-C. Jeg vil tipse om at structs i C mer eller mindre er hva du må se på som objekter.
Vanlige er gjerne at man lager structs for sammensatte datamodeller og funksjoner som arbeider med disse (kall det metoder) i egne filer, på samme måte som man gjerne deler inn klasser i egne filer. (På den måten kan du jo også lage private, statiske variabler om nødvendig, f.eks. for kortstokken.)
Flytt datamodell for kortstokk og funksjoner relatert til dette i egen fil. Lag gjerne også egen fil for datamodellen til en hånd med tilhørende funksjoner.
Da tror jeg main.c vil bli relativt ren og pen mtp. programflyt. Og når jeg sier «egen fil» så mener jeg da selvfølgelig to relaterte filer, én header-fil og en implementasjonsfil.
Og så er det godt mulig du visste dette allerede