C语言 按几行读取txt文档到新的txt文档
如下图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;
}