c中的字符串标记化

  • 本文关键字:字符串 c
  • 更新时间 :
  • 英文 :


我试图在c中使用strtok标记字符串。由于字符串有多个分隔符,我使用strtok,但是如果它们有空白,则无法标记字符串。

的例子:

String to tokenize: Name:Mustafa Baki /Phone:123456789 /Note:real
char *name = strtok(line," /");
char *phone = strtok(NULL, " /");
char *note1 = strtok(NULL," /");
//tokenize name
name = strtok(name, ":");
name = strtok(NULL, ":");

//tokenize phone number
phone = strtok(phone, ":");
phone = strtok(NULL, ":");
//tokenize note
note1 = strtok(note1, ":");
note1 = strtok(NULL, ":");
printf("Name: %s Phone: %s Note: %s n",name,phone,note1);

打印后我得到的是Name: Mustafa Phone: (null) Note: 123456789

由于名称中有空格,它破坏了一切。它只是跳过电话号码,并将其分配给注释。

我怎样才能解决这个问题?是否有可能在分隔符之后将字符串作为一个整体,例如,假设要标记的字符串是Name:Mustafa Baki。我可以在:之后把Mustafa Baki作为一个整体吗?我是否需要串联或类似的东西?

谢谢。

问题是strtok使用第二个参数作为集合进行标记。因此,字符串" /"将在空格' '上标记或在斜杠'/'上标记。不是完整字符串。

这意味着name将指向单个字符串"Mustafa",而phone指向"Baki",note1指向"Phone:123456789"

在初始调用strtok时,应该只使用斜杠"/"。然后,如果需要,去掉字符串中的尾随空格。

相关内容

  • 没有找到相关文章

最新更新