Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Дан файл символов. Сформировать линейный список. Просмотреть линейный список из головы и составить из




// символов строку.

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <io.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

struct list

{

char info;

list *prev;

list *next;

list() { prev=NULL; next=0; info=0; }

};

 

void insert_post(list *, char);

void printList(list *);

char * createString(list *);

 

list *first=0;

list *last=0;

 

char buffer[100];

 

void main(void)

{

int fh;

unsigned int i, nbytes = 100, bytesread;

list *p;

 

/* Open file for input: */

if((fh = _open("symbol.dat", _O_RDONLY)) == -1)

{

perror("open failed on input file");

 

exit(1);

}

 

/* Read in input: */

if((bytesread = _read(fh, buffer, nbytes)) <= 0) {

perror("Problem reading file");

exit(1);

}

 

for(i=0; i<bytesread; i++) {

if(buffer[i]==0x0a) continue;

p=last;

insert_post(p, buffer[i]);

}

printList(first);

 

printf("The string of item is %s\n", createString(first));

 

_close(fh);

}

 

/* вставка элемента после текущего */

void insert_post(list *q, char value)

{

list *p = new list;

if (q!= 0)

{

p->next = q->next;

p->prev = q;

}

p->info = value;

if (q == 0)

{

first = p;

last = p;

}

else

{

if (q->next == 0) last = p;

else q->next->prev = p;

q->next = p;

}

}

 

char * createString(list *q)

{

char str[100];

memset(str,0,100);

unsigned int cnt = 0;

 

while(q!=NULL) {

cnt += sprintf(str+cnt, "%c", q->info);

q = q->next;

}

return str;

}

 

/* Print the list */

void printList(list *q)

{

if (q == 0)

printf("List is empty.\n\n");

else

{

printf("The list is:\n");

 

while (q!= 0)

{

printf("%c-> ", q->info);

q = q->next;

}

printf("NULL\n\n");

}

}

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных