C ++函数,就像PHP中的substr()一样

时间:2012-01-11 02:11:32

标签: c++

char * extract(FILE * handle, int from, int len=0)
{
    long fsize = filesize(handle);
    fseek(handle, from, SEEK_SET);
    len = (len > 0) ? fsize : fsize;
    char * new_data = new char[len];

    for(int i = 0; i < len; i++)
        new_data[i] = getc(handle);

    return new_data;
}

int main()
{
    FILE * file1 = fopen("output.txt", "rb");
    char * buffer = extract(file1, 0);
}

我想在PHP中创建一个类似于substr()的函数,但这适用于二进制文件而不仅仅是文本,而上面是我想出的。它似乎有效,但我想知道我是否使用了正确的方法。

1 个答案:

答案 0 :(得分:0)

使用

而不是for {}循环
fread(new_data, 1, len, handle)

另外,

len = (len > 0) ? fsize : fsize

始终将len设置为filesize。也许你想要:

len = (len > 0) ? len : fsize