c语言读取txt文件二维数组中的相关数据后把相关数据存入一个新文件,求大神指点

lxq0228 2017-09-25 10:48:32
问题详细描述
在下面txt文件中的二维数组中,后面五列整数是索引信号,为了得到相同信号下的前个浮点数,然后把这些相同信号下的两列浮点数存入一个新的txt文件中,是一个多行两列的二维数组。例如,把所有“6 0 1 0 0”后缀信号的前两个浮点数存入一个新的txt文件里,为一个多行两列的二维数组。
txt文件中的数据(前面两列是浮点数,后面的五列是整数。):
2.170000 0.250000 7 0 1 0 0
2.150000 0.250000 7 0 0 0 0
2.140000 0.250000 7 0 0 0 0
2.090000 0.250000 6 0 1 0 0
2.070000 0.250000 6 0 0 0 0
2.060000 0.250000 6 0 0 0 0
2.050000 0.250000 6 0 0 0 0
2.040000 0.250000 6 0 1 0 0
2.030000 0.250000 6 0 1 0 0
2.020000 0.250000 6 0 1 0 0
2.010000 0.250000 6 0 0 0 0
2.000000 0.250000 6 0 1 0 0
1.990000 0.250000 6 0 0 0 0
1.980000 0.250000 6 0 1 0 0
1.970000 0.250000 6 0 1 0 0
1.960000 0.250000 6 0 0 0 0
1.950000 0.250000 6 0 0 0 0
1.940000 0.250000 6 0 1 0 0
1.930000 0.250000 6 0 0 0 0
1.920000 0.250000 6 0 1 0 0
1.910000 0.250000 6 0 0 0 0
1.900000 0.250000 6 0 0 0 0
1.890000 0.250000 6 0 0 0 0
1.880000 0.250000 6 0 1 0 0
1.870000 0.250000 6 0 0 0 0
1.860000 0.250000 6 0 0 0 0
1.850000 0.250000 6 0 0 0 0
1.840000 0.250000 6 0 1 0 0
1.830000 0.250000 6 0 0 0 0
1.820000 0.250000 6 0 1 0 0
1.810000 0.250000 6 0 0 0 0
1.800000 0.250000 6 0 0 0 0
1.790000 0.250000 6 0 0 0 0
1.780000 0.250000 6 0 1 0 0
1.770000 0.250000 6 0 1 0 0
2.160000 0.248500 7 0 1 0 0
2.090000 0.248500 6 0 0 0 0
2.080000 0.248500 6 0 0 0 0
2.070000 0.248500 6 0 1 0 0
2.060000 0.248500 6 0 1 0 0
2.050000 0.248500 6 0 0 0 0
2.040000 0.248500 6 0 0 0 0
2.030000 0.248500 6 0 1 0 0
2.020000 0.248500 6 0 0 0 0
2.010000 0.248500 6 0 0 0 0
2.000000 0.248500 6 0 1 0 0
1.990000 0.248500 6 0 0 0 0
1.980000 0.248500 6 0 0 0 0
1.970000 0.248500 6 0 0 0 0
1.960000 0.248500 6 0 0 0 0
1.950000 0.248500 6 0 1 0 0
1.940000 0.248500 6 0 1 0 0
1.930000 0.248500 6 0 0 0 0
1.920000 0.248500 6 0 1 0 0
1.910000 0.248500 6 0 0 0 0
1.900000 0.248500 6 0 0 0 0
1.890000 0.248500 6 0 0 0 0
1.880000 0.248500 6 0 1 0 0
1.870000 0.248500 6 0 1 0 0
1.860000 0.248500 6 0 1 0 0
1.850000 0.248500 6 0 0 0 0
1.840000 0.248500 6 0 1 0 0
1.830000 0.248500 6 0 0 0 0
1.820000 0.248500 6 0 0 0 0
1.810000 0.248500 6 0 0 0 0
1.800000 0.248500 6 0 0 0 0
1.790000 0.248500 6 0 0 0 0
1.780000 0.248500 6 0 0 0 0
1.770000 0.248500 6 0 1 0 0
2.500000 0.247000 7 0 0 0 0
2.190000 0.247000 7 0 1 0 0
2.140000 0.247000 7 0 1 0 0
2.070000 0.247000 6 0 1 0 0
2.060000 0.247000 6 0 0 0 0
2.050000 0.247000 6 0 1 0 0
2.040000 0.247000 6 0 0 0 0
2.030000 0.247000 6 0 0 0 0
2.020000 0.247000 6 0 1 0 0
2.010000 0.247000 6 0 0 0 0
2.000000 0.247000 6 0 1 0 0
1.990000 0.247000 6 0 0 0 0
1.980000 0.247000 6 0 0 0 0
1.970000 0.247000 6 0 1 0 0


我的程序(很有问题):
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#define n 396
#define m 7

void main()
{
errno_t err0, err1;
FILE* fp0, *fp1;
if ((err0 = fopen_s(&fp0, "F:\\ a1.txt", "r")) != 0)
{
printf("Cannot open this file\n");
exit(0);
}
if ((err1 = fopen_s(&fp1, "F:\\6-0-1-0-0.txt", "w")) != 0)
{
printf("Cannot open this file\n");
exit(0);
}
int i, j;
double data[n][m] = {0};
for (i = 0; i < n; i++)
{
for (j = 2; j < m; j++)
{
fscanf_s(fp0, "%d", &data[i][j]);
printf("%d %d %d %d %d \n", data[i][j]);
if (data[i][3] == 6 && data[i][4] == 0 && data[i][5] == 1 && data[i][6] == 0 && data[i][7] == 0)
fprintf(fp1, "%f %f %d %d %d %d %d \n",data[i][j]);
}
}
fclose(fp0);
fclose(fp1);
system("pause");
}
...全文
418 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxq0228 2017-09-25
  • 打赏
  • 举报
回复
能讲讲你的思路吗?
自信男孩 2017-09-25
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define n    396
#define m  7

struct info {
    double d1;
    double d2;
    int num[5];
};

int main(void)
{
    errno_t err0, err1;
    FILE* fp0, *fp1;
    if ((err0 = fopen_s(&fp0, "F:\\ a1.txt", "r")) != 0)
    {
        printf("Cannot open this file\n");
        exit(0);
    }
    if ((err1 = fopen_s(&fp1, "F:\\6-0-1-0-0.txt", "w")) != 0)
    {
        printf("Cannot open this file\n");
        exit(0);
    }
    int i, j;
    struct info tmp;
    for (i = 0; i < n; i++)
    {
        for (j = 2; j < m; j++)
        {
            fscanf_s(fp0, "%lf %lf %d %d %d %d\n", &tmp.d1, &tmp.d1, &tmp.num[0], &tmp.num[1], &tmp.num[2], &tmp.num[3], &tmp.num[4]);
            //fscanf_s(fp0, "%d", &data[i][j]);
            printf("%lf %lf  %d    %d    %d    %d    %d\n", tmp.d1, tmp.d2, tmp.num[0], tmp.num[1], tmp.num[2], tmp.num[3], tmp.num[4]);
            if (tmp.num[0] == 6 && tmp.num[1] == 0 && tmp.num[2] == 1 && tmp.num[3] == 0 && tmp.num[4] == 0)
                fprintf(fp1, "%lf\t%lf\n", tmp.d1, tmp.d2);
        }
    }
    fclose(fp0);
    fclose(fp1);
    system("pause");
}
试一下改过的这个程序。然后给我回馈一下是否可行。 如果还有问题,继续提出来。 既然是将a文件的部分内容转移到b文件中,那么就不需要定义那么长的二位数组,只需要一个临时变量作为中转即可。
赵4老师 2017-09-25
  • 打赏
  • 举报
回复
在cmd中执行以下命令: cd /d in.txt文件所在盘符和文件夹路径 find "6 0 1 0 0" in.txt >out.txt type out.txt
lxq0228 2017-09-25
  • 打赏
  • 举报
回复
比如这些数据: 2.040000 0.250000 6 0 1 0 0 2.030000 0.250000 6 0 1 0 0 2.020000 0.250000 6 0 1 0 0 2.000000 0.250000 6 0 1 0 0 1.980000 0.250000 6 0 1 0 0 1.970000 0.250000 6 0 1 0 0 把后缀为6 0 1 0 0的数据写入新的txt文件,里面的数据格式如下: 2.040000 0.250000 2.030000 0.250000 2.020000 0.250000 2.000000 0.250000 1.980000 0.250000 1.970000 0.250000
lxq0228 2017-09-25
  • 打赏
  • 举报
回复
坐等大神指点!!!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧