strtok()在解析out句点但保留它们时有用吗?(C)

strtok()在解析out句点但保留它们时有用吗?(C),c,strtok,C,Strtok,我试图删除由多个句子组成的字符串中的所有空格,但我也希望将句点与每个标记分开。strtok()是否仍然有用,或者是否还有其他我应该知道的函数 如果您想知道句点在哪里,并将它们视为单独的标记,那么strtok()不是正确的函数。它使用空值来删除分隔符;您不会被告知找到了哪个分隔符 char str[] ="- This. is a s.ample string."; char * pch; printf ("Splitting string \"%s\" into tokens:\n",str);

我试图删除由多个句子组成的字符串中的所有空格,但我也希望将句点与每个标记分开。strtok()是否仍然有用,或者是否还有其他我应该知道的函数

如果您想知道句点在哪里,并将它们视为单独的标记,那么
strtok()
不是正确的函数。它使用空值来删除分隔符;您不会被告知找到了哪个分隔符

char str[] ="- This. is a s.ample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,-"); //any other tokens you want to use here
while (pch != NULL)
{
  printf ("%s\n",pch);
  pch = strtok (NULL, " ,-");
}
您可能需要看看:

您还可以查看有关
strtok()
及其替代方案的其他问题。有很多。这是一个危险的功能。您不能在从另一个同时使用
strtok()
的函数调用的函数中使用,也不能调用使用
strtok()
的任何其他函数。您应该查找POSIX或Microsoft的;它们在库函数中使用是安全的。您还可以查找
strep()

您可能会发现以下问题之一很有用:


还有很多其他方法可以提供帮助。

如果您想知道句点在哪里,并将它们视为单独的标记,那么
strtok()
不是正确的函数。它使用空值来删除分隔符;您不会被告知找到了哪个分隔符

您可能需要看看:

您还可以查看有关
strtok()
及其替代方案的其他问题。有很多。这是一个危险的功能。您不能在从另一个同时使用
strtok()
的函数调用的函数中使用,也不能调用使用
strtok()
的任何其他函数。您应该查找POSIX或Microsoft的;它们在库函数中使用是安全的。您还可以查找
strep()

您可能会发现以下问题之一很有用:


还有很多其他方法可以提供帮助。

如果您想知道句点在哪里,并将它们视为单独的标记,那么
strtok()
不是正确的函数。它使用空值来删除分隔符;您不会被告知找到了哪个分隔符

您可能需要看看:

您还可以查看有关
strtok()
及其替代方案的其他问题。有很多。这是一个危险的功能。您不能在从另一个同时使用
strtok()
的函数调用的函数中使用,也不能调用使用
strtok()
的任何其他函数。您应该查找POSIX或Microsoft的;它们在库函数中使用是安全的。您还可以查找
strep()

您可能会发现以下问题之一很有用:


还有很多其他方法可以提供帮助。

如果您想知道句点在哪里,并将它们视为单独的标记,那么
strtok()
不是正确的函数。它使用空值来删除分隔符;您不会被告知找到了哪个分隔符

您可能需要看看:

您还可以查看有关
strtok()
及其替代方案的其他问题。有很多。这是一个危险的功能。您不能在从另一个同时使用
strtok()
的函数调用的函数中使用,也不能调用使用
strtok()
的任何其他函数。您应该查找POSIX或Microsoft的;它们在库函数中使用是安全的。您还可以查找
strep()

您可能会发现以下问题之一很有用:


还有很多其他的方法可以提供帮助。

OP确实指定它应该用C。这是如何“将句点与每个标记分开”的?它只是简单地去除句点(以及逗号、破折号和空格),不是吗?是的,我想我可能需要通过简单地逐个字符地遍历字符串来实现一个更简单的实现。我很想看看你们其他人想出的解决方案。我从来没有用过Strutk,但是我大部分都是用C++工作的,所以不用。但我想对于他的问题,他只需要给strtok打个无句号的电话,但不管怎样,现在我想他找到了他想要的东西OP确实指定了它应该用C。这是如何“将句号与每个标记分开”的?它只是简单地去除句点(以及逗号、破折号和空格),不是吗?是的,我想我可能需要通过简单地逐个字符地遍历字符串来实现一个更简单的实现。我很想看看你们其他人想出的解决方案。我从来没有用过Strutk,但是我大部分都是用C++工作的,所以不用。但我想对于他的问题,他只需要给strtok打个无句号的电话,但不管怎样,现在我想他找到了他想要的东西OP确实指定了它应该用C。这是如何“将句号与每个标记分开”的?它只是简单地去除句点(以及逗号、破折号和空格),不是吗?是的,我想我可能需要通过简单地逐个字符地遍历字符串来实现一个更简单的实现。我很想看看你们其他人想出的解决方案。我从来没有用过Strutk,但是我大部分都是用C++工作的,所以不用。但我想对于他的问题,他只需要给strtok打个无句号的电话,但不管怎样,现在我想他找到了他想要的东西OP确实指定了它应该用C。这是如何“将句号与每个标记分开”的?它只是简单地去除句点(以及逗号、破折号和空格),不是吗?是的,我想我可能需要通过简单地逐个字符地遍历字符串来实现一个更简单的实现。我有兴趣再谈一谈