All pastes #442765 Raw Edit

spletne spletke

public c v1 · immutable
·published 2007-04-16 13:22 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <string.h>//#define DEBUGint main(int argc, char *argv[]) {  char *buffer=NULL;  double size=0;  FILE *fd;  size_t result;  char *lindent=NULL; //left indent  char *rindent=NULL; //right indent  int i=0, st=0, stevec=0, j=1;  char *max;    if ((fd=fopen(argv[1], "r")) == NULL) {    printf("Ne morem odpreti datoteke za branje");    exit(1);  }    // dobimo velikost datoteke  fseek(fd, 0, SEEK_END);  size = ftell(fd);  rewind(fd);    // rezerviramo dovolj pomnilnika  buffer = (char *) malloc(sizeof(char)*size);  if (buffer == NULL) {    exit(1);  }  // preberemo datoteko v pomnilnik  result = fread(buffer, 1, size, fd);    fclose(fd);  //**********************************  // operiranje nad pomnilnikom  //**********************************      // postavimo robni pogoj  if ((max = strstr(buffer,"</body>") )== NULL) {    exit(1);  }    // postavimo robni pogoj  lindent=strstr(buffer, "<body");     if (lindent == NULL) {    exit(1);  }    while (lindent<max) {  // iscemo krajisca izpisovanja    lindent=strchr(lindent,'>') + 1;    rindent=strchr(lindent,'<');    st = rindent-lindent;        #ifdef DEBUG    printf("%d",st);    #endif        // izpisemo ravno znake med krajisci    for (i=0; i<st; i++) {        if (stevec==0) printf("%c",*(lindent+i));                     }    // premaknemo se za toliko, kolikor smo izpisali    lindent = lindent+st;            for (j=0; (lindent+j < max); j++) {        // pazimo na pravilno strukturiranost in stevilcno ujemanje tagov        if ((*(lindent+j) == '<') && (*(lindent+j+1) != '/')) stevec++;         else if ((*(lindent+j) == '/') && (*(lindent+j+1) == '>')) stevec--;        else if ((*(lindent+j) == '<') && (*(lindent+j+1) == '/')) {            stevec--;                        #ifdef DEBUG            printf("(st:%d)",stevec);            #endif            // ko smo nasli tag break, se pomaknemo do konca tega taga in prekinemo izvajanje            lindent=strchr((lindent+j), '>');            break;        }            }      }          free(buffer);  return 0;}