
Untitled
By: a guest on
May 30th, 2012 | syntax:
C | size: 1.60 KB | hits: 16 | expires: Never
#include "header.h"
#include <string.h>
void write_file(char** strings, int string_count, char* filename){
stringIndex stringsInfo;
stringsInfo.aboutString=(elementIndex*)malloc(sizeof(elementIndex)*string_count);
stringsInfo.index=string_count;
stringsInfo.aboutString[0].cursorStart=string_count*sizeof(elementIndex)+4;
stringsInfo.aboutString[0].length=strlen(strings[0]);
for (int i=1;i<string_count;i++){
stringsInfo.aboutString[i].cursorStart=stringsInfo.aboutString[i-1].cursorStart+stringsInfo.aboutString[i-1].length;
stringsInfo.aboutString[i].length=strlen(strings[i]);
}
FILE *p=fopen(filename,"wb");
fwrite(&stringsInfo.index,sizeof(size_t),1,p);
for (unsigned int i=0;i<stringsInfo.index;i++){
fwrite(&stringsInfo.aboutString[i].cursorStart,sizeof(size_t),1,p);
fwrite(&stringsInfo.aboutString[i].length,sizeof(size_t),1,p);
}
for (unsigned int i=0;i<stringsInfo.index;i++){
fwrite(strings[i],sizeof(char),strlen(strings[i]),p);
}
fclose(p);
}
char* read_string(int index, FILE* f){
stringIndex stringsInfo;
fread(&stringsInfo.index,sizeof(size_t),1,f);
stringsInfo.aboutString=(elementIndex*)malloc(sizeof(elementIndex)*stringsInfo.index);
for (unsigned int i=0;i<stringsInfo.index;i++){
fread(&stringsInfo.aboutString[i].cursorStart,sizeof(size_t),1,f);
fread(&stringsInfo.aboutString[i].length,sizeof(size_t),1,f);
}
char *str;
str=(char*)malloc(sizeof(char)*stringsInfo.aboutString[index-1].length);
fseek(f,stringsInfo.aboutString[index-1].cursorStart,SEEK_SET);
fread(str,sizeof(char),stringsInfo.aboutString[index-1].length,f);
return str;
}