Открыть текстовый файл:
fsrc = fopen(argv[1],"rt");
Определить его размер:
long fsize(FILE *f)
{
long pos, end;
pos = ftell(f);
fseek(f,0,SEEK_END);
end = ftell(f);
fseek(f,pos,SEEK_SET);
return end;
}
Выделить памяти:
long src_size = fsize(fsrc);
char *buf = new char[src_size+1];
Зачитать в нее собственно текст:
fread(buf,src_size,1,fsrc);
Последний символ файла не ноль, поэтому пририсовываем к буферу ноль и дальше работаем с ним, как с длинной строчкой текста:
buf[src_size] = 0;
parser.add_source(buf);
Потом обнаруживается, что в конце буфера 304 байта мусора, и потом собственно ноль, который я туда написал. То есть текста считалось из файла на 304 байта меньше, хотя размер файла определяется верно.
Я-то знаю, почему это так.
No comments:
Post a Comment