ТОР 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 stack { char info; stack* prev; stack() { prev=0; info=0; } }; // Указатель на вершину стека stack *stack_top=0; // Проверка содержимого вершины стека int top() { if(stack_top==0) return(0);
return(stack_top->info); } // Добавление элемента в стек void push(char value) { stack *p = new stack;
p->info = value; p->prev = stack_top; stack_top = p; } // Снятие верхнего элемента стека char pop() { char value; stack *p;
value = stack_top->info; p = stack_top->prev;
delete stack_top; stack_top = p;
return(value); } // проверка стека на пустоту int empty() { if(stack_top==0) return(1); return(0); } // запись строки в файл void write_file(char string[]) { int fh2; unsigned byteswritten;
if((fh2 = _open("str2.dat", _O_RDWR | _O_CREAT, _S_IREAD | _S_IWRITE))!= -1) { if((byteswritten = _write(fh2, string, strlen(string))) == -1) perror("Write failed"); else printf("Wrote %u bytes to file\n", byteswritten); }
_close(fh2); }
char buffer[100];
void main() { int fh; unsigned int i, cnt=0, nbytes = 100, bytesread;
/* Open file for input: */ if((fh = _open("str1.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); }
char str[100]; memset(str,0,100);
for(i=0; i<bytesread; i++) { if(buffer[i]==0x0a) { while(!empty()) { cnt += sprintf(str+cnt, "%c", pop()); } cnt += sprintf(str+cnt, "%c", 0x0a); } else { push(buffer[i]); } } write_file(str);
while(!empty()) { printf("%c ", pop()); } printf("\n"); _close(fh);
}
Не нашли, что искали? Воспользуйтесь поиском:
|