我正在使用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 | ...
您可以将数据存储在某些临时缓冲区中。