Vou colocar uma parte do programa, a parte que estou em duvida mas tem mais código pra cima e pra baixo do que vou mostrar.
 
	 
	O que acontece é que eu não consigo fazer esse do-while funcionar, já tentei usar tanto o %c quanto o %s no scanf. já tentei usar aspas simples tanto na declaração do char, quanto la dentro da condição do while, tentei varias combinações envolvendo, %c %s ' '  e " ". Eu sei que o certo é usar a aspas simples e o %c porem tentei isso tudo porque não tava dando certo. Quando chega la no scanf do while, ele le a variavel cont mas depois finaliza o programa, nem chega a executar os comandos abaixo dele.
 
	obs: já tentei com a biblioteca string.h inserida e não deu, tirei ela a toa mesmo.
 
	 
 
	Código completo:
 
#include <stdio.h>
#include <stdlib.h>
struct tiposDeVoto{
    int nulos;
    int brancos;
    int c[4];
}tDV={0,0,{0,0,0,0}};
struct porcVotos{
    float nulos;
    float brancos;
    float c[4];
}pV={0.0,0.0,{0.0,0.0,0.0,0.0}};
int main(){
    /*Em uma eleição para governador concorrem 4 candidatos (1, 2, 3 e 4). No dia da eleição cada
     um dos N eleitores votaram:
• 1, 2, 3 ou 4 para cada candidato.
• 0 (zero) para voto em branco.
• -1 para voto nulo.
Considere que:
• O candidato ganha a eleição se fizer 51% ou mais do total de votos.
• Se não houver ganhador, os dois melhores irão para o segundo turno.
Faça um programa em C que calcule e imprima:
• O candidato vencedor (se houver), seguido da porcentagem de votos obtida. Se não houver vencedor,
 imprima os candidatos que irão ao segundo turno com a respectiva porcentagem de votos obtida.
• A porcentagem obtida pelos demais candidatos.
• A porcentagem de votos em branco e nulos.*/
    tentenovamente:
    printf("----------------------------\n");
    printf("         Urna eleitoral       ");
    printf("\n 1- Tiago\n 2- Pedro\n 3- Alvaro\n 4- Chaves\n 0- Voto em branco\n -1- Voto nulo\n");
    printf("------------------------------\n");
    
    int voto=0,i=0;
    char cont="a";
    do{
    printf("Digite o voto: ");
    scanf("%i",&voto);
    switch (voto){
        case 1:
            tDV.c[0]+=1;
            break;
        case 2:
            tDV.c[1]+=1;
            break;
        case 3:
            tDV.c[2]+=1;
            break;
        case 4:
            tDV.c[3]+=1;
            break;
        case -1:
            tDV.nulos+=1;
            break;
        case 0:
            tDV.brancos+=1;
            break;
        default:
            printf("Escolha invalida!\nTente novamente!\n");
            goto tentenovamente;
    }
    
        i++;
        printf("Quer continuar? [S/N]");
        scanf("%s",&cont);   
    } while (cont=="S");
    
    int totalDeVotos=i+1;
    pV.brancos=tDV.brancos/totalDeVotos;
    pV.nulos=tDV.nulos/totalDeVotos;
    for (int k=0;k<4;k++)
        pV.c[k]=(float)tDV.c[k]/totalDeVotos;
        int vencedor=0;
    printf("pv.c[0]: %.2f\n",pV.c[0]);
    if(pV.c[0]>0.51 && pV.c[0]>pV.c[1] && pV.c[0]>pV.c[2] && pV.c[0]>pV.c[3]){
        vencedor=1;
        printf("Tiago e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[0]*100));
    }
    if(pV.c[1]>0.51 && pV.c[1]>pV.c[0] && pV.c[1]>pV.c[2] && pV.c[1]>pV.c[3]){
        vencedor=1;
        printf("Pedro e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[1]*100));
    }
    if(pV.c[2]>0.51 && pV.c[2]>pV.c[0] && pV.c[2]>pV.c[1] && pV.c[2]>pV.c[3]){
        vencedor=1;
        printf("Alvaro e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[2]*100));
    }
    if(pV.c[3]>0.51 && pV.c[3]>pV.c[0] && pV.c[3]>pV.c[2] && pV.c[3]>pV.c[1]){
        vencedor=1;
        printf("Chaves e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[3]*100));
    }
    /*if (vencedor==0){
        printf("vencedor=0");
    }*/
    return 0;
}