sscanf%s,其中字符串可以为空

问题描述 投票:0回答:1

我正在使用sscanf来读取文件行,这些行具有非常相似的数据集,但是可能包含或可能不包含某些数据点。这是数据的格式:FEATURE_ID | FEATURE_NAME | FEATURE_CLASS | STATE_ALPHA | STATE_NUMERIC | COUNTY_NAME | COUNTY_NUMERIC | PRIMARY_LAT_DMS | PRIM_LONG_DMS | PRIM_LAT_DEC | PRIM_LONG_DEC | SOURCE_LAT_DMS | SOURCE_LONG_D | S_CE_LONG_D

看起来像这样填写:924821 |原油和炼油厂编号1 |弹簧| NM | 35 | Hidalgo | 023 | 313030N | 1082532W | 31.5084388 | -108.4255951 | |||

| 1382 | 4534 | U巴里奇| 03/01/1994 |

或类似这样,取决于那些数据点是否存在:924855 |棉木板洗涤|流| NM | 35 |圣胡安| 045 | 364554N | 1090003W | 36.7649994 | -109.0009304 | 364623N | 1090126W | 36.7730556 | -109.0238889

| 1654 | 5426 | Beclabito | 03/01/1994 |

我的问题在于“ ||||”这是一组分隔符,用于分隔可能存在或可能不存在的数据点。我正在尝试格式化sscanf以将这些数据点值存储为字符串,无论该数据点是否实际存在,但使用格式说明符“ [^ |]”和“%s”不起作用。我该如何进行此条件阅读?

这是我的sscanf:

sscanf(curr, "%d|%[^|]|%[^|]|%[^|]|%d|%[^|]|%d|%[^|]|%[^|]|%f|%f|||||%d|%d|%[^|]|%[^|]|%[^|\n]", &id, name, class, state, &state_num, county, &county_num, lat, lon, &lat_dec, &lon_dec, &elev_m, &elev_f, map_name, date_created, date_edited);

我目前只是忽略这些值,并像它们不存在一样进行操作。我该如何处理?

编辑/澄清:我需要像%s这样的sscanf格式说明符,该格式说明符不扫描任何内容。例如,我可以执行sscanf(“ one | 2”,“%s |%d”,str,num),但如果是sscanf(“ | 2”,“%s |%d”,str,num)它抛出一个错误,但是我需要它在str中存储NULL。

我正在使用sscanf来读取文件行,这些行具有非常相似的数据集,但是可能包含或可能不包含某些数据点。这是数据的格式:FEATURE_ID | FEATURE_NAME | ...

c formatting scanf
1个回答
0
投票

您可以将数据存储在某些临时缓冲区中。

© www.soinside.com 2019 - 2024. All rights reserved.