标题:用C语言从多个文件获取不同的数组并写入不同的新文件中
只看楼主
zzmx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2020-2-4
结帖率:75%
已结贴  问题点数:20 回复次数:3 
用C语言从多个文件获取不同的数组并写入不同的新文件中
任务需要,我想把数据从多个文件获取不同的数组并写入不同的新文件中(而且是一个对应一个),下面是我写的把一个文件中的数据写入另一个文件中的程序,这个调试成功了。但是我需要把相应的约1000个文件都这么操作,写的程序运行后只是建立了新的数据文件,并没有将数据一一写入,文件是空的。请教我的程序该怎么改?(不知道我说明白了没有
这是文件一对一写入的代码
#include <iostream>
int main(int argc, char** argv)
{
int i,line,flag;
double a,b;
char ch;
FILE *fp=fopen("G:\\uz\\uz\\C3energy00000.txt","r");
FILE *fpp=fopen("G:\\CCC\\z.txt","w");
if(fp==NULL)
printf("the file don't exist.");
for(i=1,line=1;;i++)
{
    ch=fgetc(fp);
    if(ch=='\n')
    line+=1;
    if(ch==EOF)
    break;
}
printf("%d\n",line);
fp=fopen("G:\\uz\\uz\\C3energy00000.txt","r");
for(flag=0;flag<5;)//skip the first five line
    {
        ch=fgetc(fp);
        if (ch=='\n')
        {
            flag+=1;
        }
    }
    line=line-5;
while (fscanf(fp,"%lf %lf",&a,&b)==2)
    {
        //a=a*1000000;
        fprintf(fpp,"%e \n",a*100000);
        printf("%e \n",a);
    }
fclose(fp);
fclose(fpp);
    return 0;
}

这是多个一对一写入的代码
#include <iostream>
int main(int argc, char** argv)
{
int i,line,flag,b=100000,c=100000;
double a;
char ch,filename[1000],data[1000];
FILE *fp;
FILE *fpp;
//creat new file
for(c=100000;c<100854;c++)
{
sprintf(data,"G:\\uz\\new\\data%d.txt",c);
fpp=fopen(data,"w");   
}
if(fpp==NULL)
printf("error\n");
//循环,读取多个文件数据行数
for(b=100000;b<100854;b++)
{
sprintf(filename,"G:\\uz\\uz2\\C3energy%d.txt",b);
fp=fopen(filename,"r");
for(i=0,line=0;;i++)
  {
    ch=fgetc(fp);
    if(ch=='\n')
    line+=1;
    if(ch==EOF)
    break;
  }
}
//循环,读取多个文件数据并写入新的文件
for(b=100000;b<100854;b++)
{
fp=fopen("filename","r");
for(flag=0;flag<5;)//skip the first five line
    {
        ch=fgetc(fp);
        if (ch=='\n')
        {
            flag+=1;
        }      
    }
    line=line-5;
for(c=100000;c<100004;c++)
   {
   
    if(fpp==NULL)
    printf("the file don't exist.");
    while (fscanf(fp,"%lf %lf",&a,&b)==2)
    {
        //a=a*1000000;
        fpp=fopen(data,"w");
        fprintf(fpp,"%e \n",a);
    }        
   }  
}
fclose(fp);
   fclose(fpp);
    return 0;
}
附几组数据
data.zip (35.04 KB)



搜索更多相关主题的帖子: flag for 写入 文件 line 
2020-02-08 18:59
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:10 
printf("%d\n",line);
    fclose(fp);

你一个的文件的时候最好加上这个关闭文件的操作,这样下次使用的时候就会从头打开文件。

程序代码:
#include <stdio.h>

int main(int argc, char** argv)
{
    int i,line,flag,b=0,c=100000;
    double a,d;
    char ch,filename[1000]={0},data[1000]={0};
    FILE *fp=NULL;
    FILE *fpp=NULL;

    for(b=0,c=100000; b<3; b++,c++)
    {
        sprintf(filename,"F:\\data\\C3energy%05d.txt",b);
        printf("%s\n",filename);
        fp=fopen(filename,"r");
        for(i=0,line=0;; i++)
        {
            ch=fgetc(fp);
            if(ch=='\n')
                line+=1;
            if(ch==EOF)
                break;
        }
        printf("%d\n",line);
        fclose(fp);     //关闭文件

        //循环,读取多个文件数据并写入新的文件
        fp=fopen(filename,"r");
        for(flag=0; flag<5;) //skip the first five line
        {
            ch=fgetc(fp);
            if (ch=='\n')
            {
                flag+=1;
            }
        }
        line=line-5;

        sprintf(data,"F:\\data\\data%05d.txt",c);
        fpp=fopen(data,"w");
        printf("%s\n",data);
        if(fpp==NULL)
            printf("the file don't exist.");
        while (fscanf(fp,"%lf %lf",&a,&d)==2)
        {
            //fpp=fopen(data,"w");
            printf("%e \n",a);
            fprintf(fpp,"%e \n",a);
        }

        fclose(fp);
        fclose(fpp);
    }

    return 0;
}


for(c=100000;c<100854;c++)
{
sprintf(data,"G:\\uz\\new\\data%d.txt",c);
fpp=fopen(data,"w");   
}


你的这个里相当于把最后一个data文件打开的指针赋给fpp,也就是相当于循环的前面没有任何意义,只有最后一次有用,下面相同的问题
fp=fopen("filename","r");
filename不要使用""。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-02-08 19:33
zzmx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2020-2-4
得分:0 
回复 2楼 纯蓝之刃
谢谢!
2020-02-08 20:28
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:10 
吃饭的步骤是夹起来一筷子菜,
送进嘴里,
循环。

那么问题来了,你夹起八百多筷子不吃是意欲何为啊?
目测都掉地上了。
然后又想起来连吃八百多口?
有点不雅。
就这么错的。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-02-08 23:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499158-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055535 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved