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

lxq0228 2017-09-25 11:35:34
问题详细描述:
在下面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");
}
...全文
282 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-09-26
  • 打赏
  • 举报
回复
#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;
    int ret;
    struct info tmp;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            ret = fscanf_s(fp0, "%lf %lf %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 (ret == EOF)
                goto lable;
            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);
        }
    }
lable:
    fclose(fp0);
    fclose(fp1);
    system("pause");
}
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");
}
借鉴一下吧。 头文件,对于系统库文件,建议用<>,自定义文件用""
赵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
qq_29846883 2017-09-25
  • 打赏
  • 举报
回复
问题不是很清楚, 写完之后的文件格式应该是什么样的
lxq0228 2017-09-25
  • 打赏
  • 举报
回复
不是很懂啊 。

70,020

社区成员

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

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