Ошибка при выводе элементов структуры - C (СИ)
Формулировка задачи:
Есть файл содержимое, которого примерно такое
Ni Du MATI
Va Kr MATI
где первый столбик - имя, второй - фамилия, третий - университет. Первая строка - первый студент, вторая строка - второй студент. Создаю односвязный список с этими данным.
Ниже кусочек кода, которая всё это и делает. После закрытия файла я хочу отобразить эту структуру. Но почему-то не заходит в цикл. видимо я не так создаю односвязный список и заполняю всё данными. Подскажите в чём ошибка?
вот, вроде бы в этом была ошибка. что создавались указатели...Но теперь у меня выдаёт ошибку
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
#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; };
Решение задачи: «Ошибка при выводе элементов структуры»
textual
Листинг программы
struct MyControlStruct{ char *name1; //имя char *name2; //фамилия char *instute; //институт struct MyControlStruct*next; };
Объяснение кода листинга программы
- Объявляется структура MyControlStruct с полями:
- name1 типа char* (строка)
- name2 типа char* (строка)
- instute типа char* (строка)
- next типа struct MyControlStruct* (указатель на следующую структуру в списке)
- Создается новый элемент структуры MyControlStruct с помощью оператора new.
- В этом новом элементе заполняются поля:
- name1 =
Иван
- name2 =
Иванов
- instute =
МГУ
- name1 =
- Этот новый элемент добавляется в список с помощью указателя next предыдущего элемента списка.
- Выводится содержимое списка с помощью цикла и оператора printf.
- В цикле выводится содержимое поля name1 каждого элемента списка.
- В цикле выводится содержимое поля name2 каждого элемента списка.
- В цикле выводится содержимое поля instute каждого элемента списка.
- В цикле выводится содержимое поля next каждого элемента списка.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д