Olá, seu uso é praticamente igual nas outras linguagens que já estudei.
while ((opt = getopt(argc, argv, "e:s:")) != -1) {
switch (opt) {
case 's':
saida=optarg;
printf("Nome do arquivo de saida: %s\n", saida);
errS++;
break;
case 'e':
entrada=optarg;
printf("Nome do arquivo de entrada: %s\n", entrada);
errE++;
break;
case '?':
fprintf(stderr, "\nFALTA PARAMETROS\n");
default:
fprintf(stderr, "%s \nparametros:\n-e arquivo de entrada\n-s arquivo de saida\n", argv[0]);
exit(EXIT_FAILURE);
}