fscanf不会工作 - 程序正在抛出错误

时间:2016-06-17 17:57:23

标签: c scanf

我在fscanf函数中遇到了一些问题。我是C的新手,我想从文件中创建阅读线并将其保存到结构中,但似乎我不太了解它^^。

PATIENT *patientTab;
int tabSize = 0;
int patientCount = 0;
PATIENT temp;
int tempIndex = 0;

if (openFile()){
    printf("Plik otworzony!\n\n");
    while(fscanf(dataBase, "%s %f",
    &temp.patientNumber,
    &temp.patientGender,
    &temp.patientLength,
    &temp.patientWeigth,
    &temp.patientHeadCircuit,
    &temp.patientApperance,
    &temp.patientPulse,
    &temp.patientGrimace,
    &temp.patientActivity,
    &temp.patientRespiration)
        != EOF){

            if (patientCount + 1 >= tabSize){
                tabSize += 5;
                patientTab = realloc(patientTab, sizeof(int) * tabSize);
            }

                for (tempIndex; tempIndex < 5; tempIndex++){

                    patientTab[patientCount].patientNumber[tempIndex] = temp.patientNumber[tempIndex];

                }

            patientTab[patientCount].patientGender = temp.patientGender;
            patientTab[patientCount].patientLength = temp.patientLength;
            patientTab[patientCount].patientWeigth = temp.patientLength;
            patientTab[patientCount].patientHeadCircuit = temp.patientHeadCircuit;
            patientTab[patientCount].patientApperance = temp.patientApperance;
            patientTab[patientCount].patientPulse = temp.patientPulse;
            patientTab[patientCount].patientGrimace = temp.patientGrimace;
            patientTab[patientCount].patientActivity = temp.patientActivity;
            patientTab[patientCount].patientRespiration = temp.patientRespiration;
            patientCount++;

        }

    //free(temp);
    fclose(dataBase);
} 
else endProgram();

dataBase是全球性的。

问题在于程序试图循环&#34;而#34;包括&#34; fscanf&#34;函数,程序正在抛出错误而唯一的想法,我能做的就是关闭程序。我在互联网上找到了一个例子,但这是一个带有一个变量的简单例子。我确定问题是我的声明,包含许多参数&#34;&amp; temp&#34;。

结构是:

typedef struct Patient {

char patientNumber[5];
char patientGender;
double patientLength;
float patientWeigth;
float patientHeadCircuit;
int patientApperance;
int patientPulse;
int patientGrimace;
int patientActivity;
int patientRespiration;

}PATIENT;

...这是内容文件的片段: txt link

1 个答案:

答案 0 :(得分:0)

我知道您指的是链接http://www.beetxt.com/BMB/

中的内容

请改变 1)

while(fscanf(dataBase, "%s %f",
    &temp.patientNumber,
    &temp.patientGender,
    &temp.patientLength,
    &temp.patientWeigth,
    &temp.patientHeadCircuit,
    &temp.patientApperance,
    &temp.patientPulse,
    &temp.patientGrimace,
    &temp.patientActivity,
    &temp.patientRespiration)

while(fscanf(dataBase, "%s %c %lf %f %f %d %d %d %d %d",
    temp.patientNumber,
    &temp.patientGender,
    &temp.patientLength,
    &temp.patientWeigth,
    &temp.patientHeadCircuit,
    &temp.patientApperance,
    &temp.patientPulse,
    &temp.patientGrimace,
    &temp.patientActivity,
    &temp.patientRespiration)

2)

if (patientCount + 1 >= tabSize){
                tabSize += 5;
                patientTab = realloc(patientTab, sizeof(int) * tabSize);
            }

使用

if (patientCount + 1 >= tabSize){
                tabSize += 5;
                patientTab = realloc(patientTab, sizeof(PATIENT) * tabSize);
            }

3)

for (tempIndex; tempIndex < 5; tempIndex++){

                    patientTab[patientCount].patientNumber[tempIndex] = temp.patientNumber[tempIndex];

                }

            patientTab[patientCount].patientGender = temp.patientGender;
            patientTab[patientCount].patientLength = temp.patientLength;
            patientTab[patientCount].patientWeigth = temp.patientLength;
            patientTab[patientCount].patientHeadCircuit = temp.patientHeadCircuit;
            patientTab[patientCount].patientApperance = temp.patientApperance;
            patientTab[patientCount].patientPulse = temp.patientPulse;
            patientTab[patientCount].patientGrimace = temp.patientGrimace;
            patientTab[patientCount].patientActivity = temp.patientActivity;
            patientTab[patientCount].patientRespiration = temp.patientRespiration;
            patientCount++;

for (tempIndex; tempIndex < 5; tempIndex++){
    strcpy(patientTab[patientCount].patientNumber[tempIndex] = temp.patientNumber[tempIndex]);
    patientTab[patientCount].patientGender = temp.patientGender;
    patientTab[patientCount].patientLength = temp.patientLength;
    patientTab[patientCount].patientWeigth = temp.patientLength;
    patientTab[patientCount].patientHeadCircuit = temp.patientHeadCircuit;
    patientTab[patientCount].patientApperance = temp.patientApperance;
    patientTab[patientCount].patientPulse = temp.patientPulse;
    patientTab[patientCount].patientGrimace = temp.patientGrimace;
    patientTab[patientCount].patientActivity = temp.patientActivity;
    patientTab[patientCount].patientRespiration = temp.patientRespiration;
    patientCount++;

}

希望这项工作正常..并将char patientNumber[5];更改为char patientNumber[6];