You don't need formatex.
Code:
new RandomSound[64]
formatex(RandomSound, charsmax(RandomSound), "%s", g_SnapSounds[random(sizeof(g_SnapSounds))])
client_cmd(target, "spk %s", RandomSound)
Code:
client_cmd(target, "spk %s", g_SnapSounds[random(sizeof(g_SnapSounds))])
As for the loop, you did right. There is no workaround.
__________________