2012-02-18 119 views
-2

假設我有一個文本文件,上面寫着: 這個文件有明文如何將文本文件拆分爲C中的部分?

現在,我要分這個文本文件與同等人物部分的「N」數字。 假設用戶需要三個分區,那麼應該創建1.txt,2.txt和3.txt,每個分區大約8個字符。

(該程序的下一部分是將這些文件重新加入原始狀態,但我相信我可以自己做到這一點如果我能得到第一部分的幫助)。

你們能指導我解決這個問題嗎?使用

語言是C

void main(int argc, char** argv) 
{ 
int iChunkNo=0; 
char cFileName[30]; 

iChunkNo = atoi(argv[2]); 
strcpy(cFileName, argv[1]); 

printf("The file will be divided into %d chunks \n", iChunkNo); 

FILE* file_read_pointer; 
file_read_pointer = fopen(cFileName, "r"); 

int iCount=0; 
char ch; 

while (1) 
{ 
     ch = fgetc(file_read_pointer); 
     if (ch == EOF) 
      break; 
     ++iCount; 
} 

printf("The number of characters in the file is: %d \n", iCount); 

int iCharPerFile = 0; 
iCharPerFile = iCount/iChunkNo; 

printf("The number of characters per chunk file will be: %d \n", iCharPerFile); 

FILE* file_write_pointer; 

int j=1; 
for(j; j<=iChunkNo; j++) 
{ 
    char num[5] = {j}; 
    char ext[4] = {"txt"}; 

    char name[15]; 
    sprintf(name, "%d.%s", j, ext);  

    FILE* file_write_pointer; 
    file_write_pointer = fopen(name, "w"); 
} 

int i=0; 

for(i; i<iCharPerFile; i++) 
{ 
    char temp; 
    temp = fgetc(file_read_pointer); 
    //fputc(temp, file_write_pointer); 
    fprintf(file_write_pointer, "%c", temp); 
} 
} 
+4

此問題具有鮮明的家庭作業外觀。 – dasblinkenlight 2012-02-18 18:24:58

+0

你是否將空格和換行符計算爲字符?如果是這樣的話,你總是可以首先對所有字符進行計數,得到總分「n」,然後在讀取總共「/」字符後輸出。 – 2012-02-18 18:25:52

+0

@JamesMcLaughlin 我不是一個完整的代碼複印機:)我喜歡編程,但當我陷入困境時,它讓我氣憤。我試圖發佈我的代碼。見下面的評論。不會允許我在這裏發佈。 – Asim 2012-02-19 10:13:43

回答

1

你可以做這樣的事情:(使用fseekftell

  • 查找文件的大小。然後尋求回到開頭
  • 確定你需要寫在每個文件(大小/ N)
  • 在同一時間(使用getc)讀取一個字符並寫入到相應的文件(putc
    • 大小使用sprintf(fname, "%d.txt", index)打造像「的1.txt」
    • 使用fopen打開文件,並保持一個FILE *current給你寫這在每一步
名10

這就是說,你應該開始緩慢。首先製作一個程序,只需使用getc + putc將一個文件複製到另一個文件中,然後繼續工作。

+0

感謝您的幫助。我已經有一個自己的程序,可以將文本從一個文件複製到另一個文件。 在這項作業中,我已經執行了以下操作: 1-檢查總字符數 2-決定每個文件的字符數 3-創建所需數量的文本文件。 我現在嘗試編碼,牢記您的建議。上次我編譯時,它只是將一個奇怪的YYYYYYYY符號複製到生成的文本文件中lol – Asim 2012-02-19 10:19:24

0

您將需要計算出總共有多少文本,可能是將整個文件「sl into」到內存中。對於文件大小不超過兆字節大小的文件,這將工作得很好,但不適用於千兆字節及以上。

然後您需要知道將多少個零件分成(命令行參數處理?),因此需要寫入多少數據才能寫入每個零件。隨後創建每個輸出文件,將正確的數據段寫入文件並關閉它。

假設文件有29個字節,你需要將它分成3部分。你會創建2個部分,9個字節,11個,或2個,10個,9個。那麼如果它是28個字節長和5個部分呢? (4 x 5字節+ 1 x 8字節?3 x 6字節+ 2 x 5字節?或者是2 x 5字節+ 3 x 6字節?)

+0

非常感謝您的輸入,但我將更多地使用文件中的字符數,而不是其中的字節數。我知道他們都可以是相互關聯的,但我覺得#方式更簡單。 – Asim 2012-02-19 10:20:41