C 如何分离特定数据

C 如何分离特定数据,c,strtok,strcpy,C,Strtok,Strcpy,我试图从以下字符串中提取城市 佛罗里达州沃顿堡海滩欧文东北200号凯马特 我编写的代码遍历了字符串,我可以提取它 佛罗里达州沃尔顿堡海滩 然而,我不明白如何有效地提取城市。我可以使用strlen提取状态,但这不适用于城市 void getCity(char strCity[], const char strLine[]) { char newLine[MAX_CHARS_PER_LINE+1]; char newCity[MAX_CHARS_PER_LINE+1]; strc

我试图从以下字符串中提取城市

佛罗里达州沃顿堡海滩欧文东北200号凯马特

我编写的代码遍历了字符串,我可以提取它

佛罗里达州沃尔顿堡海滩

然而,我不明白如何有效地提取城市。我可以使用strlen提取状态,但这不适用于城市

void getCity(char strCity[], const char strLine[])
{
   char newLine[MAX_CHARS_PER_LINE+1];
   char newCity[MAX_CHARS_PER_LINE+1];

   strcpy(newLine, strLine);
   char* token = strtok(newLine, ",");

   if(token != NULL)
   {
     token = strtok(NULL,",");
     token = strtok(NULL, ",");
   } 
   strcpy(newCity, token);
   strcpy(strCity, token);
使用您拥有的字符串(
“Fort Walton Beach FL”
)反向搜索“first”(实际上是最后一个)空格。使用例如来做这件事

然后将该空格更改为字符串终止符
“\0”
,字符串将变成
“Fort Walton Beach”

增加指向(前一个)空间的指针,如果需要的话,您就有了指向状态的第一个字符的指针。

获取您拥有的字符串(
“Fort Walton Beach FL”
)并使用反向搜索“first”(实际上是最后一个)空间。使用例如来做这件事

然后将该空格更改为字符串终止符
“\0”
,字符串将变成
“Fort Walton Beach”


如果需要,增加指向(前一个)空格的指针,您就有了指向州的第一个字符的指针。

如果州代码总是两个字母,您只需检查这两个字母前的空格,将空格转换为空,剩下的是城市名称。注意短字符串(错误数据)。最后的
strcpy()
语句将相同的信息复制到两个局部变量中—这可能不是您想要的。如果状态代码总是两个字母,您只需检查这两个字母之前的空格,将空格转换为null,剩下的是城市名称。注意短字符串(错误数据)。最后的
strcpy()
语句将相同的信息复制到两个局部变量-这可能不是您想要的。谢谢。但是很快,如何将空格更改为字符串终止符?我有点搞不清楚,按字面意思分配它
char*c=strrchr(test,”);如果(c)*c='\0';否则。谢谢。但是很快,如何将空格更改为字符串终止符?我有点搞不清楚,按字面意思分配它
char*c=strrchr(test,”);如果(c)*c='\0';否则