gpt4 book ai didi

c - C 中的函数 strtok() 和混合变量类型

转载 作者:行者123 更新时间:2023-11-30 14:44:17 25 4
gpt4 key购买 nike

我试图从文件中读取数据并将数据插入到结构数组中,该文件的格式如下:

...
0087|www.google.com|2017.08.07 12:13:36
0150|www.yahoo.com|2018.10.06 04:03:12
...

其中数据类型由“|”分隔,然后我使用 strtok() 分隔数据,这对于两种字符串类型 timestamp 都很有效domain,我能够将数据正确存储在结构中,但是,对于数据类型 customerid 我只能获取struct,我该如何解决这个问题?谢谢!

#include <stdio.h>
#include <string.h>

struct AccessRecord {
int customerID;
char domain[256];
char timestamp[21];
};

struct AccessRecord rc[1000];


int main()
{
int i = 0; char line[300];
const char s[2] = "|";

FILE *fd;
fd = fopen("./example_data.ipb","r");


while (fgets(line, sizeof(line), fd)) {

char *token;

token = strtok(line, s);

rc[i].customerID = token;
token = strtok(NULL, s);

strcpy (rc[i].domain , token);
token = strtok(NULL, s);


strcpy (rc[i].timestamp , token);
token = strtok(NULL, s);

i++;
}
fclose(fd);

return 0;
}

最佳答案

请注意提取数据的两种不同方式:

token = strtok(line, s);
rc[i].customerID = token; // assignment of char* (to int, so suspect)

token = strtok(NULL, s);
strcpy (rc[i].domain , token); // string copying

尽管事实上两者都是字符串。虽然客户 ID 是数字数据,,但它存储为字符串,并且应按字符串对待。

也就是说,由于结构体中是整数,所以可以在读取的时候进行转换,比如用:

token = strtok(line, s);
rc[i].customerID = strtol(token, NULL, 10);

关于c - C 中的函数 strtok() 和混合变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586341/

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