版权声明:本文为博主原创文章,未经博主允许不得转载。 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