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