Я хочу написать функцию, которая, передаваемая двумя параметрами (имя файла и глобальный список), выполняет следующее: если список пуст и файл существует, функция начинает читать содержимое файла,Для каждого символа он генерирует узел в связанном списке, где хранится символ, а затем добавляет узел в список справа.Наконец, функция возвращает в качестве параметров созданный список и значение 1, в противном случае она завершает выполнение функции и возвращает 0 в качестве параметра.
Ниже приводится решение, предоставленное моим учебникомупражнение, но я не могу понять, как он возвращает список «л».В этом случае «l» не должен указывать только на первый узел?
struct el {
struct el *next;
char data;
};
struct el *list=NULL;
int add (char *name, struct el **l) {
FILE *f; char c;
struct el *temp, *last = NULL;
f= fopen(name, "r");
if (f==NULL || (*l)!=NULL){
printf("errf");
return 0;
}
c=fgetc(f);
while (c!=EOF) {
temp= (struct el *) malloc(sizeof(struct el));
if (temp==NULL) return 0;
temp->data=c;
temp->next=NULL;
if (*l==NULL){
last=temp;
*l=temp;
}
else{
last->next=temp;
last=temp;
}
c=fgetc(f);
}
fclose(f);
return 1;
}