Ошибка при выводе элементов структуры - 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 каждого элемента списка.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д