1
int main()
{
    FILE *fe, *fs;
    unsigned char buffer[128];
    int bytesreader;
    int i;
    char cad[100];

    fe = fopen("pg2000.txt", "rb");
    fseek(fe, 0L, SEEK_END);
    int x = ftell(fe);
    printf("%d",x);
    int x = ftell(fe);
    int result=x/128;

    for(i=0;i<result;i++)
    {
        bytesreader = fread(buffer, 1, 128, fe)
        sprintf(cad, "a%d", i);
        strcat(cad,".txt");
        printf("%s\n", cad);
        fs = fopen(cad, "wb");
        fwrite(buffer, 1, bytesreader, fs);
        fclose(fs);
    }

    fclose(fe);

    return 0;
}

ファイルを128バイトずつに分割したいのですが、ファイルが大きいとアクセス違反になってしまい、よくわかりません...

4

1 に答える 1

3
fe = fopen("pg2000.txt", "rb"); 
int x = ftell(fe);
int result=x/128;

xここはゼロになります。成功すればfopen()。あなたがチェックする必要があるもの。

また、WhozCraig が指摘しているように、fclose()forfsはループ内にある必要があります。

この

for(i=0;i=result;i++)
         ^

おそらく、あなたが念頭に置いていたものとまったく同じではありません。

于 2013-10-06T21:03:11.883 に答える