Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 30th, 2012  |  syntax: C  |  size: 1.60 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include "header.h"
  2. #include <string.h>
  3. void write_file(char** strings, int string_count, char* filename){
  4.         stringIndex stringsInfo;
  5.         stringsInfo.aboutString=(elementIndex*)malloc(sizeof(elementIndex)*string_count);
  6.         stringsInfo.index=string_count;
  7.         stringsInfo.aboutString[0].cursorStart=string_count*sizeof(elementIndex)+4;
  8.         stringsInfo.aboutString[0].length=strlen(strings[0]);
  9.         for (int i=1;i<string_count;i++){
  10.                 stringsInfo.aboutString[i].cursorStart=stringsInfo.aboutString[i-1].cursorStart+stringsInfo.aboutString[i-1].length;
  11.                 stringsInfo.aboutString[i].length=strlen(strings[i]);
  12.         }      
  13.         FILE *p=fopen(filename,"wb");
  14.         fwrite(&stringsInfo.index,sizeof(size_t),1,p);
  15.         for (unsigned int i=0;i<stringsInfo.index;i++){
  16.                 fwrite(&stringsInfo.aboutString[i].cursorStart,sizeof(size_t),1,p);
  17.                 fwrite(&stringsInfo.aboutString[i].length,sizeof(size_t),1,p);
  18.         }
  19.         for (unsigned int i=0;i<stringsInfo.index;i++){
  20.                 fwrite(strings[i],sizeof(char),strlen(strings[i]),p);
  21.         }
  22.         fclose(p);
  23. }
  24. char* read_string(int index, FILE* f){
  25.         stringIndex stringsInfo;
  26.         fread(&stringsInfo.index,sizeof(size_t),1,f);
  27.         stringsInfo.aboutString=(elementIndex*)malloc(sizeof(elementIndex)*stringsInfo.index);
  28.         for (unsigned int i=0;i<stringsInfo.index;i++){
  29.                 fread(&stringsInfo.aboutString[i].cursorStart,sizeof(size_t),1,f);
  30.                 fread(&stringsInfo.aboutString[i].length,sizeof(size_t),1,f);
  31.         }
  32.         char *str;
  33.         str=(char*)malloc(sizeof(char)*stringsInfo.aboutString[index-1].length);       
  34.         fseek(f,stringsInfo.aboutString[index-1].cursorStart,SEEK_SET);
  35.         fread(str,sizeof(char),stringsInfo.aboutString[index-1].length,f);
  36.         return str;
  37. }