c - 如何从文本行获取特定数据
问题描述
我正在尝试获取文本文件中某一行的地址。此行包含以下内容;
凯马特,7055 东百老汇,图森 AZ
我正在使用 strcpy 和 strtok 函数来提取地址(7055 East Broadway),但到目前为止,我只能使用我的代码提取商店的名称(Kmart)。
char strLine[] 从文件中获取该行,我想将它返回给 char strAddress[]
我将如何仅提取地址以及可能的城市和州?
#define MAX_CHARS_PER_LINE 80
void getAddress(char strAddress[], const char strLine[])
{
char newLine[MAX_CHARS_PER_LINE+1];
strcpy(newLine,strLine);
char* token = strtok(newLine, ",");
strAddress = token;
printf("%s\n",strAddress);
}
解决方案
假设,
- 地址是该行中的第二个元素
- 它用逗号分隔。
您可以使用 strtok 获取地址,如下所示。
void getAddress(char strAddress[], const char strLine[])
{
char newLine[MAX_CHARS_PER_LINE+1];
strcpy(newLine,strLine);
char* token = strtok(newLine, ",");
if (token != NULL)
{
token = strtok(NULL, ",");
}
if (token != NULL)
{
strcpy (strAddress,token);
}
return;
}
要获得城市和州,只需再打token = strtok(NULL, ",");
一次
如果我想把城邦分开,然后把城市和州分开怎么办?
这是一项更复杂的工作,因为您在城市和州之间没有逗号。您还需要注意城市可以有两个词的情况,例如新奥尔良。
您可以假设该州有 2 个字符。在这种情况下,建议的路线是
- 在字符串中隔离城市 + 州
- 删除字符串末尾的空格
- 字符串的最后 2 个字符是状态。
推荐阅读
- php - 如何在 laravel 查询中添加整理
- svg - Safari 中 url(#fragment) shadowTree 错误的解决方法?
- php - php 从 phpmyadmin 获取数据
- javascript - 为什么 Redux 中间件定义为三个箭头函数,而不是一个具有三个参数的函数?
- python - 按客户 ID 分组,并在 Pandas 中获取具有最新值的日期列
- xaml - 只有一个平台渲染器的自定义 MaterialFrame 控件
- windows - Inno Setup:更改文件描述
- maven - Websphere 9 Maven 远程部署
- sql - 如何终止在 SQL Server 中执行时间过长的请求
- django - 有没有办法在同一个项目中运行 React + Django 而无需一次又一次地运行 npm run build ?