Ошибка при выводе элементов структуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть файл содержимое, которого примерно такое Ni Du MATI Va Kr MATI где первый столбик - имя, второй - фамилия, третий - университет. Первая строка - первый студент, вторая строка - второй студент. Создаю односвязный список с этими данным. Ниже кусочек кода, которая всё это и делает. После закрытия файла я хочу отобразить эту структуру. Но почему-то не заходит в цикл. видимо я не так создаю односвязный список и заполняю всё данными. Подскажите в чём ошибка?
#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct MyControlStruct{
    char *name1; //имя
    char *name2; //фамилия
    char *instute; //институт
    struct MyControlStruct*next;
};
void InformationOfStudents(){
    struct MyControlStruct*rex;
    struct MyControlStruct*beg=NULL;
    struct MyControlStruct*end=NULL;
    int CountSt=0;
    char c,c_=' ',buf1[100]={0},*b1=buf1;
    FILE*fIn=NULL;
    rex=(struct MyControlStruct *)malloc(sizeof(struct MyControlStruct)); //аоаоаоа
    if(!(fIn=fopen("InformationOfStudent.txt","r"))){Error(1);exit(1);}
    while(!feof(fIn)){
        c=fgetc(fIn);
        if( (isspace(c))||(c==EOF) ){
            if(isalnum(c_)){
                *b1++=' ';
                if(CountSt==0){
                    rex->name1=buf1;
                }
                if(CountSt==1){
                    rex->name2=buf1;
                }
                if(CountSt==2){
                    rex->instute=buf1;
                }
                CountSt++;
                if(CountSt==3)CountSt=0;
                FreeBuf(buf1);
                b1=buf1;
            }
        }else{
            *b1++=c;
        }
        c_=c;
        if( (c=='\n')||(c==EOF) ){
            if(beg==NULL && end==NULL) beg=rex;
            else end->next=rex;
        }
        end=rex;
        end->next=NULL;
    }
    fclose(fIn);//далее распечатка структуры!!
    free(rex);
    rex=beg;
    while(rex!=NULL){
        printf("\nName=%s\tSecond Name=%s\tInstute=%s",rex->name1,rex->name2,rex->instute);
        rex=rex->next;
    }
}
struct MyControlStruct{
    char name1[40]; //имя
    char name2[40]; //фамилия
    char instute[40]; //институт
    struct MyControlStruct*next;
};
вот, вроде бы в этом была ошибка. что создавались указатели...Но теперь у меня выдаёт ошибку Error 3 error C2106: '=' : left operand must be l-value c:\documents and settings\admin\мои документы\visual studio 2010\projects\lab01\lab0103\lab0103.c 68 1 lab0103

Решение задачи: «Ошибка при выводе элементов структуры»

textual
Листинг программы
struct MyControlStruct{
    char *name1; //имя
    char *name2; //фамилия
    char *instute; //институт
    struct MyControlStruct*next;
};

Объяснение кода листинга программы

  1. Объявляется структура MyControlStruct с полями:
    • name1 типа char* (строка)
    • name2 типа char* (строка)
    • instute типа char* (строка)
    • next типа struct MyControlStruct* (указатель на следующую структуру в списке)
  2. Создается новый элемент структуры MyControlStruct с помощью оператора new.
  3. В этом новом элементе заполняются поля:
    • name1 = Иван
    • name2 = Иванов
    • instute = МГУ
  4. Этот новый элемент добавляется в список с помощью указателя next предыдущего элемента списка.
  5. Выводится содержимое списка с помощью цикла и оператора printf.
  6. В цикле выводится содержимое поля name1 каждого элемента списка.
  7. В цикле выводится содержимое поля name2 каждого элемента списка.
  8. В цикле выводится содержимое поля instute каждого элемента списка.
  9. В цикле выводится содержимое поля next каждого элемента списка.
  10. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы