O do while é um laço de repetição que executa primeiro o bloco de comandos e depois testa a condição. Caso a condição seja verdadeira, o laço é executado novamente. Quando a condição é falsa, a execução do laço é terminada.
Essa característica de executar e depois testar, garante que o laço será executado ao menos uma vez, diferentemente do while, o qual não executa quando sua condição é falsa.
A validação de entrada é um exemplo pertinente para o uso do do while, uma vez que a leitura do dado deverá ser executada ao menos uma vez. Quando o dado não é consistente com o conjunto de dados esperados, uma nova leitura é solicitada.
Veja o exemplo abaixo:
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char * argv[])
005: {
006: char sexo;
007:
008: do
009: {
010: printf("Digite o sexo: ");
011: fflush(stdin); scanf("%c", &sexo);
012: if(sexo != 'M' && sexo != 'F')
013: {
014: printf("Digite M ou F\n");
015: }
016: }while(sexo != 'M' && sexo != 'F');
017: system("PAUSE");
018: return 0;
019: }
Note que o código é feito para importunar o usuário de forma que ele digite M para masculino ou F para feminino. Em outras palavras, o programa ficará em loop até que M ou F seja digitado. Baseado nisso, posso afirmar que a condição de saída do laço é M ou F.
Com este post finalizei a trilogia de laços de repetição, o que não quer dizer que esgotei o assunto...