gpt4 book ai didi

c - 如何读取不确定数据表单文件并将其存储在结构中

转载 作者:行者123 更新时间:2023-12-05 01:32:36 27 4
gpt4 key购买 nike

我无法从文件中读取数据。

文件:

0   0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
23 liu zhengzhi 90
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0
0 0.0

在文件中,您不确定一行是 0 0.0 还是 int char* char* double,我需要将它读入结构。

结构:

typedef struct Credit
{
char first_name[20]="";
char last_name[20]="";
int account_number=0;
double balance=0.0;
}account;

我该怎么做。

最佳答案

鉴于只有这两种情况,解析就简化了:

1) 使用 fopen()
打开/读取文件2) 在 while 循环中使用 fgets() 逐行读取
3) 使用 strtok()(或 strtok_r(),如果线程化)标记和存储每个新行的元素
4) 使用每行的标记计数,并测试每个字符串标记的内容
5) 对于 2 个标记的计数,跳过行
6) 对于 4 个标记的计数,转换第 1 和第 4 个字符串。 ( atoi() & atof() )
7) 将已解析的值分配给结构成员。
8) 关闭文件 - fclose()

如果可能有超过 1 条数据行,那么您可能需要一个结构数组来包含数据:

对于您显示的数据文件,这里有一个使用以下步骤的非常简单的解析例程示例:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

typedef struct Credit
{
char first_name[20];
char last_name[20];
int account_number;
double balance;
}ACCOUNT;

ACCOUNT account[10];

int main()
{
char file[]={"C:\\Play\\account.txt"};
char line[1024];
char *token = {0};
char delim[]={" \r\n\t"};
int count, i, j;
char array[4][80];//should be dynamically allocated, this for illustration

FILE *fp = fopen(file, "r");
if(fp)
{
j = 0;
while (fgets(line, 1024, fp) != NULL)
{
token = strtok(line, delim);
i = -1;
while(token)
{
i++;
strcpy(array[i], token);
token = strtok(NULL, delim);
}
if(i==3)
{
account[j].account_number = atoi(array[0]);
strcpy(account[j].first_name, array[1]);
strcpy(account[j].last_name, array[2]);
account[j].balance = atof(array[3]);
}
j++;//for next in array of account
memset(array, 0, 320);
}
fclose(fp);
}

return 0;

}

关于c - 如何读取不确定数据表单文件并将其存储在结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com