c - 如何分离特定数据

标签 c strtok strcpy

我正在尝试从以下字符串中提取城市;

Kmart,200 Irwin Ne,佛罗里达州沃尔顿堡滩

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

佛罗里达州沃尔顿堡滩

但是,我不明白如何有效地提取城市。我可以使用 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") 并反向搜索“第一个”(实际上是最后一个)空格。使用例如strrchr去做。

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

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

关于c - 如何分离特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57014330/

相关文章:

c - 字符串长度对未初始化字符指针的影响

c - 在 C 代码中使用 strcpy 对字符串数组进行排序时出现段错误

'C' 中的 CPU 密集型操作

诅咒将光标 move 到非空白位置

c - 在for中声明结构?

复制无符号字符数组

c - E2045 错误的目标文件格式 :"XXX.obj"

c - 为什么 strtok() 在最后一个标记后附加一个空格

c - C 中的 strtok 函数

c - 使用自定义 strtok 在 C 中解析和数据覆盖问题