首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问怎样把文本文件的内容保存到结构体数组

2013-10-24 
请教怎样把文本文件的内容保存到结构体数组请教有文本文件 A.TXT,内容如下1XX.DBF100000001YY.DBF12000000

请教怎样把文本文件的内容保存到结构体数组
请教有文本文件 A.TXT,内容如下
1  XX.DBF     10000000
1  YY.DBF     12000000
2  XXXX.DBF   680000000
2  YYYY.DBF   12345678
2  AA.DBF     55555555
3  BBB.DBF    666666666
3  CCC.DBF    871332

其中第一列和第3列都是整型
怎样读取这个文本文件并把这3列的内容保存到结构体数组呢?
[解决办法]
这是读一行的

std::ifstream file;
file.open("f:\\test.txt");
char buf[1024]={0},buffer[20]={0},tem[20]={0};
file.getline(buf,sizeof(char[1024]));
int i=0,j=0,number1,number2;
while(buf[i]!=9)
{
buffer[j++]=buf[i++];
}
i++;j=0;
number1=atoi(buffer);
memset(buffer,0,sizeof(char[20]));
while(buf[i]!=9)
{
buffer[j++]=buf[i++];
}
i++;j=0;
memcpy(tem,buffer,sizeof(char[20]));
memset(buffer,0,sizeof(char[20]));
while(buf[i]!=13)
{
buffer[j++]=buf[i++];
}
number2=atoi(buffer);

[解决办法]
//请教有文本文件 A.TXT,内容如下
// 1  XX.DBF     10000000
// 1  YY.DBF     12000000
// 2  XXXX.DBF   680000000
// 2  YYYY.DBF   12345678
// 2  AA.DBF     55555555
// 3  BBB.DBF    666666666
// 3  CCC.DBF    871332
#include <stdio.h>
#define MAXL 100
#define MAXC 40
struct DATA {
    int no;
    char name[13];
    int recnum;
} d[MAXL];
FILE *f;
int i,n;
char ln[MAXC+1];
int main() {
    f=fopen("A.TXT","r");
    if (NULL==f) {
        printf("Can not open file A.TXT!\n");
        return 1;
    }
    i=0;
    n=0;
    while (1) {
        if (NULL==fgets(ln,MAXC,f)) break;
        n++;
        if (3==sscanf(ln,"%d%12s%d",&d[i].no,d[i].name,&d[i].recnum)) {
            i++;
            if (i>=MAXL) {
                printf("Too many datas(>%d datas) ignored.\n",MAXL);
                break;
            }
        } else {
            printf("Line %d format error:%s",n,ln);
        }
    }
    fclose(f);
    n=i;
    for (i=0;i<n;i++) {
        printf("%d %-12s %d\n",d[i].no,d[i].name,d[i].recnum);
    }
    return 0;
}
//1 XX.DBF       10000000
//1 YY.DBF       12000000
//2 XXXX.DBF     680000000
//2 YYYY.DBF     12345678
//2 AA.DBF       55555555
//3 BBB.DBF      666666666
//3 CCC.DBF      871332
//

[解决办法]
结构体 设计要合理 我觉得 对齐的话操作会方便一些。这样的话 对于每个条目 都是 固定的位置!
struct. A{
        char filename[maxpath];
        int num;

A a ={"some.txt",123456};

fwrite{file descriptor,(char*)&a,sizeof(A),1);

热点排行