kodiak Posted April 12, 2012 at 06:44 PM Report #448832 Posted April 12, 2012 at 06:44 PM Olá pessoal. Tenho o ciclo seguinte para inserir datas numa estrutura de datas. int main() { Data datas[size],dInput; int contador = 0; do{ printf("Insira a %d data (DD/MM/AAAA):\n", contador + 1); scanf("%d/%d/%d\n", &dInput.dia,&dInput.mes, &dInput.ano); datas[contador].ano = dInput.ano; datas[contador].mes = dInput.mes; datas[contador].dia = dInput.dia; contador++; }while (1); return 0; } Porque raio o printf não está a funcionar correctamente e aparece assim? Obrigado, kodiak
pmg Posted April 12, 2012 at 07:08 PM Report #448838 Posted April 12, 2012 at 07:08 PM O que nao funciona nao é o printf(), é o scanf(). E a culpa é do '\n'. O que acontece é que cada espaco em branco dentro da string de formatacao para o scanf() (espacos, tabs, '\n's, ...) faz com que o scanf ignore espacos em branco no input. Quando escreves a primeira data, e das ENTER, o ENTER é espaco em branco e "faz parte" do '\n' do scanf(); portanto o scanf continua a espera de alguma coisa que nao seja espaco em branco. Ao meteres a segunda data, o scanf() ve o 1 deixa de esperar por espacos terminando. Mas nesta altura ja meteste a segunda data e o ciclo esta outra vez no scanf() a espera de espacos em branco ... Solucao: tira o '\n' do formato. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
kodiak Posted April 12, 2012 at 07:42 PM Author Report #448842 Posted April 12, 2012 at 07:42 PM O que nao funciona nao é o printf(), é o scanf(). E a culpa é do '\n'. O que acontece é que cada espaco em branco dentro da string de formatacao para o scanf() (espacos, tabs, '\n's, ...) faz com que o scanf ignore espacos em branco no input. Quando escreves a primeira data, e das ENTER, o ENTER é espaco em branco e "faz parte" do '\n' do scanf(); portanto o scanf continua a espera de alguma coisa que nao seja espaco em branco. Ao meteres a segunda data, o scanf() ve o 1 deixa de esperar por espacos terminando. Mas nesta altura ja meteste a segunda data e o ciclo esta outra vez no scanf() a espera de espacos em branco ... Solucao: tira o '\n' do formato. Obg pela explicação
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now