fscanf在if条件下发生错误

时间:2017-08-14 18:47:04

标签: c

我在一个功能中遇到问题。在那里我打开一个.txt(向右打开,我开始保存变量,直到一个if。它进入条件然后它不会做sfanf。 程序可以构建并运行,直到它通过此功能。 它表示错误所在的fscanf上方的问题。 以前的代码都应该正常工作。

ppac le_pacientes(char *nomefich){
ppac lipac=NULL,novo,aux=lipac;
pac pacientes;
FILE *f;

f=fopen(nomefich,"rt");
if(!f){
    printf("Erro ao abrir ficheiro\n");
    return NULL;
}

pacientes.prox=NULL;

while(fscanf(f,"%100[^\n]",pacientes.nome)==1){    
    fscanf(f,"%d-%d-%d",&pacientes.dn,&pacientes.mn,&pacientes.an);


    pacientes.idade = verifica_idade(lipac);

    fscanf(f,"%d consultas",&pacientes.nconsult);
    if(pacientes.nconsult>=2)
    {
        ///  !!!!problem!!!!  ///
        fscanf(f,"%s",pacientes.tipoc1);printf("hello\n\n");
        //fscanf(f,"%d/%d/%d -",&pacientes.dc1,
               // &pacientes.mc1,&pacientes.ac1);
        //fscanf(f," %100[^\n]",pacientes.nomemed1);

        //fscanf(f,"%s - %d/%d/%d - ",pacientes.tipoc2,&pacientes.dc2,
                //&pacientes.mc2,&pacientes.ac2);
        //fscanf(f," %100[^\n]",pacientes.nomemed2);
    }
    /*else if(pacientes.nconsult==1)
    {
        fscanf(f,"%c - %d/%d/%d - ",pacientes.tipoc1,&pacientes.dc1,
                &pacientes.mc1,&pacientes.ac1);
        fscanf(f," %100[^\n]",pacientes.nomemed1);
    }*/
    printf("hello\n\n");
    novo=malloc(sizeof(pac));
    if(!novo){
        printf("ERRO a alocar memoria\n");
        fclose(f);
        return lipac;
    }

    *novo=pacientes;
    if(!lipac)
        lipac=novo;
    else
        aux->prox=novo;
    aux=novo; 
}

return lipac;

0 个答案:

没有答案