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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yanchenyu365/article/details/83212349

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

1-17行     1.txt

18-34行   2.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;
}

以下固定了输出文件名格式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;
}

以下为范例数据 data.txt

-12      15.67972  
-11      14.41002  
-10      13.14073  
-9       11.87113  
-8       10.60172  
-7       9.33216   
-6       8.06275   
-5       6.79329   
-4       5.52414   
-3       4.25744   
-2       3.00386   
-1       1.8144    
0        0.85292   
1        0.31004   
2        0.10066   
3        0.03197   
4        0.01012   
-11.9    15.55264  
-10.9    14.283    
-9.9     13.01364  
-8.9     11.74412  
-7.9     10.47464  
-6.9     9.20512   
-5.9     7.93569   
-4.9     6.66624   
-3.9     5.3972    
-2.9     4.1312    
-1.9     2.88092   
-0.9     1.70527   
0.1      0.78      
1.1      0.27869   
2.1      0.09014   
3.1      0.02862   
4.1      0.00905   
-11.8    15.42555  
-10.8    14.15594  
-9.8     12.88655  
-8.8     11.61707  
-7.8     10.34754  
-6.8     9.07805   
-5.8     7.80861   
-4.8     6.53918   
-3.8     5.27026   
-2.8     4.00512   
-1.8     2.75879   
-0.8     1.59888   
0.2      0.71181   
1.2      0.25045   
2.2      0.08076   
3.2      0.02563   
4.2      0.00811   
-11.7    15.29842  
-10.7    14.02886  
-9.7     12.75942  
-8.7     11.49     
-7.7     10.22041  

猜你喜欢

转载自blog.csdn.net/yanchenyu365/article/details/83212349