создать структуру с помощью fscanf в цикле while, переменные заменяются после второй итерации - PullRequest
0 голосов
/ 01 сентября 2018
    FILE * stream= fopen(room_file, "r");
    if (stream==NULL){
        return NULL;
    }
    while(!feof(stream)){
        fscanf(stream, "%s %d %d",building,&roomNumber,&size);
        if(fgets(multimedia, WORD_LEN, stream)==NULL){
            break;
        }
        if(strcmp(multimedia, "N")==0){
          mm=false;
        }
        else{
            mm=true;
        }
        Room newRoom=roomCreate(building, roomNumber, size, mm);
      Node newNode=createNode(newRoom);
        addToRoomsList(sysList, newNode);
    }

Здесь я пытаюсь создать комнаты с полями building, roomNumber, size, mm и во второй итерации цикла while значения в newRoom-> building, ..., newRoom-> mm изменяются в результате scanf

Room roomCreate (char *building_name, int number, int size, bool mm)
{
    assert(building_name!=NULL);

    if (size<=0 || size>=1000 || number<=0 || number>=10000){
        return NULL;
    }

    Room newRoom= malloc(sizeof(*newRoom));
    newRoom->building_name=building_name;
    newRoom->multi_media=mm;
    newRoom->size=size;
    newRoom->number=number;
    newRoom->orders=NULL;
    return newRoom;
}

-функция, которая создает комнату, но я думаю, проблема не в этом, просто в дополнительных деталях

...