gpt4 book ai didi

c - 使用 txt 文件输入过滤 C 中的数据列

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

我正在做一个关于向用户提供路线的 C 程序作业。一开始,我得到了一些有关 stop_id、位置等的数据。

示例数据是这样的

location_type, parent_station, stop_id, stop_code, stop_name, stop_desc, stop_lat, stop_lon, zone_id0,,10000,10000,"Albany Hwy After Armadale Rd","",-32.1479054960,116.0201957650,40,,10001,10001,"Albany Hwy After Frys L","",-32.1449537724,116.0183152090,3

我需要的信息是stop_id、stop_code、stop_name、stop_lat 和stop_lon。 鉴于我应该尽量不使用 strtok(),那么过滤掉这些列的有用方法是什么?

最佳答案

假设您有一个 char*char[],其中包含名为 input 的行中的字符。

您可以保留几个指向子字符串开头和结尾的指针,该子字符串包含逗号分隔字符串中所需的元素,然后循环遍历字符串中的所有字符。

当您有有效的开始和结束位置时,执行 memcpy() 来获取感兴趣的字符,并将 NUL 终止符添加到您刚刚复制的字符串中:

#define MAX_LEN 512
#define MAX_ENTRIES 9

/* run the following for each line of input */

char* start = &input[0];
char* end = &input[0];
char entry[MAX_ENTRIES][MAX_LEN];
uint32_t entry_idx = 0;
int finished = 0; // false
do {
end = strchr(start, ',');
if (!end) {
end = input + strlen(input);
finished = 1;
}
memcpy(entry[entry_idx], start, end - start);
entry[entry_idx][end - start] = '\0';
entry_idx++;
start = end + 1;
} while (!finished);

获取字段的值只是取消引用正确的条目索引(即 stop_identry[2]entry[3] 表示 stop_code 等)。

请注意,您要取消引用的是 char[],因此任何数值都可能需要转换为整数或浮点值,具体取决于您需要导出的内容。像 sscanf() 等函数可以在这里提供帮助。

关于c - 使用 txt 文件输入过滤 C 中的数据列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433762/

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