C语言 按几行读取txt文档到新的txt文档

如下图data.txt,需要把数据按17行读取到自动命名新建的txt文档里:

1-17行     1.txt

18-34行   2.txt

……

C语言 按几行读取txt文档到新的txt文档

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILE_BUF_LEN 1024
#define MODEM_FILE_PATH "./data.txt"
int main()
{
	int i=0;
  	FILE *fp,*fpw[512];
  	char fbuf[FILE_BUF_LEN];
    char wfname[50]={""};
 
  	fp = fopen(MODEM_FILE_PATH,"r");
  	if(fp == NULL)
    {   
     	printf("Open %s Error!\n", MODEM_FILE_PATH);  
     	exit(1); 
    } 

  	while(feof(fp)==0)
  	{
        memset(fbuf,0,FILE_BUF_LEN);
 	  	fgets(fbuf,FILE_BUF_LEN,fp);
        printf("[%d] >> %s\n",i,fbuf);
         printf("===== i=%d =====\n",i % 17);
        if( i % 17 == 0)//0或17行的倍数;
        {
            
            sprintf(wfname,"./gff-gu--%d.txt",i/17);//gff-gu--4.0
            printf("%s\n",wfname);
            fpw[i/17] = fopen(wfname,"wb+");
             printf("i=%d\n",i);
            if(fpw[i/17] == NULL)//第n个17行;
            {   
                printf("Open fpw[%d] Error!\n",  i/17);  
                exit(1); 
            } 
        }
        fwrite(fbuf,1,strlen(fbuf),fpw[i/17]);
        i++;
    }
	
	fclose(fp);								
	return 0;
}

C语言 按几行读取txt文档到新的txt文档

以下固定了输出文件名格式gff-gu-*,从-4.0开始0.1递加:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILE_BUF_LEN 1024
#define MODEM_FILE_PATH "./data.txt"
int main()
{
	int i=0;
	float num1=-4.0,num2=0;
  	FILE *fp,*fpw[512];
  	char fbuf[FILE_BUF_LEN];
    char wfname[50]={""};
 
  	fp = fopen(MODEM_FILE_PATH,"r");
  	if(fp == NULL)
    {   
     	printf("Open %s Error!\n", MODEM_FILE_PATH);  
     	exit(1); 
    } 

  	while(feof(fp)==0)
  	{
        memset(fbuf,0,FILE_BUF_LEN);
 	  	fgets(fbuf,FILE_BUF_LEN,fp);
        printf("[%d] >> %s\n",i,fbuf);
         printf("===== i=%d =====\n",i % 17);
        if( i % 17 == 0)//0或17行的倍数;
        {
            num2=(i/17)/10;
            sprintf(wfname,"./gff-gu--%d.txt",num1+num2);//gff-gu--4.0
            printf("%s\n",wfname);
            fpw[i/17] = fopen(wfname,"wb+");
             printf("i=%d\n",i);
            if(fpw[i/17] == NULL)//第n个17行;
            {   
                printf("Open fpw[%d] Error!\n",  i/17);  
                exit(1); 
            } 
        }
        fwrite(fbuf,1,strlen(fbuf),fpw[i/17]);
        i++;
    }
	
	fclose(fp);								
	return 0;
}