2013-10-06 45 views
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個字節的相等部分,但是當文件很大時,出現訪問衝突,我不明白...將文件等分爲128字節的每個部分

+1

我猜你沒有學過關於檢查fopen返回值的教訓。 http://stackoverflow.com/questions/19213006/copy-file-but-error-double-free-or-corruption-in-c –

+1

同樣,對於'ftell',它會很高興地返回0,因爲你在開始的文件。而'fs'應該在*** for循環中真正關閉,因爲那是你打開它的地方。 – WhozCraig

+0

我做了更改,但仍然不起作用 – Vicky

回答

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

x這裏將爲零。如果fopen() suceeds。你需要檢查。

此外,正如WhozCraig指出的那樣,fclose()對於fs應該在您的循環中。

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

可能不是正是你腦子裏想的是什麼無論是。

+0

感謝所有,它運行,它創建的文件,但文件是空白的... – Vicky

+0

因爲fe後指向該文件的結尾?也許回到開頭或使用倒帶。 –

+0

泡芙..我不知道... – Vicky

相關問題