2012-02-18 91 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