扫描一个多列的文件,将每一列扫描到一个结构体变量中

来源:互联网 发布:新闻英语听力训练软件 编辑:程序博客网 时间:2024/05/21 09:33

一.文件的内容 a.txt

    16 172 1001171005 12 0 260 17 8 17 11 15 34 500 43.432743 0.229601 0.000000 -2001 269 140 -13 25 14 58 100 0 1502939736 83020 0.000000 4 BS1001171009 38220872 BS1001171008 38220310 BS1001171007 38220288 BS1001171010 38220856    16 172 1001171005 12 0 263 17 8 17 11 15 34 750 0.000000 0.000000 0.000000 -1998 251 125 -23 28 10 58 100 0 1502939736 332357 0.000000 2 BS1001171009 38208995 BS1001171008 0    16 172 1001171005 12 0 264 17 8 17 11 15 35 0 43.374115 0.002367 0.000000 -2008 264 151 -10 14 21 58 100 0 1502939736 582413 0.000000 4 BS1001171009 38251504 BS1001171008 38250900 BS1001171007 38250912 BS1001171010 38251489    16 172 1001171005 12 0 266 17 8 17 11 15 35 250 43.469775 0.240061 0.000000 0 0 0 0 0 0 0 0 0 1502939736 832438 0.000000 4 BS1001171009 29450786 BS1001171008 29450226 BS1001171007 29450217 BS1001171010 29450757    16 172 1001171005 12 0 267 17 8 17 11 15 35 500 0.000000 0.000000 0.000000 -2001 261 121 -18 20 21 58 90 0 1502939737 82466 0.000000 4 BS1001171009 0 BS1001171008 0 BS1001171007 38226955 BS1001171010 38227487    16 172 1001171005 12 0 268 17 8 17 11 15 35 750 43.454180 0.378724 0.000000 -2006 250 147 -4 19 11 58 90 0 1502939737 332469 0.000000 4 BS1001171009 38249544 BS1001171008 38248974 BS1001171007 38248959 BS1001171010 38249501    16 172 1001171005 12 0 270 17 8 17 11 15 36 0 0.000000 0.000000 0.000000 -2010 262 131 -20 20 24 58 90 0 1502939737 582329 0.000000 4 BS1001171009 38253488 BS1001171008 0 BS1001171007 38252886 BS1001171010 38253446    16 172 1001171005 12 0 271 17 8 17 11 15 36 250 0.000000 0.000000 0.000000 -2005 283 145 -14 13 32 58 90 0 1502939737 832397 0.000000 4 BS1001171009 38222067 BS1001171008 0 BS1001171007 38221486 BS1001171010 38222034

二.结构体定义

typedef struct _coordinate_value{    int  coor_id;    char x_value[256];    char y_value[256];    char z_value[256];}coordinate_value;

三.函数实现:只扫描文件的4,14,15,16行

int read_file(char *file_name, coordinate_value brone[]){    FILE *fd;    char buf[2048];    memset(buf, 0x00, sizeof(buf));    int wordmove = 0;    int clcount = 0;    char column[256];    int i;    int struct_arrray_size = 0;    if(file_name == NULL)    {        printf("file_name is NULL\n");        return -1;    }    fd = fopen(file_name, "r+");    if(fd == NULL)    {        printf("open file fail\n");        return -1;    }    while(fgets(buf, 2048, fd))    {        if(!strlen(trim(buf)))        {            continue;        }        wordmove = 0;        for(clcount = 0; clcount <= 37; clcount++)        {            memset(column, 0x00, sizeof(column));            for(i = 0; i < strlen(buf); i++)            {                if(buf[wordmove] != ' ')                {                    column[i] = buf[wordmove];                    wordmove++;                }                else                {                    wordmove++;                    break;                }            }            if(clcount == 3)            {                brone[struct_arrray_size].coor_id = atoi(trim(column));            }            else if(clcount == 13)            {                memcpy(brone[struct_arrray_size].x_value, trim(column), strlen(trim(column)));            }            else if(clcount == 14)            {                memcpy(brone[struct_arrray_size].y_value, trim(column), strlen(trim(column)));            }            else if(clcount == 15)            {                memcpy(brone[struct_arrray_size].z_value, trim(column), strlen(trim(column)));            }        }        struct_arrray_size++;    }    return struct_arrray_size;}
阅读全文
0 0
原创粉丝点击