У меня есть небольшая программа, которая использует strtok
, как показано ниже:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="1,2,,3,4,5";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,",");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, ",");
}
return 0;
}
Мой вывод выглядит следующим образом:
Splitting string "1,2,,3,4,5" into tokens:
1
2
3
4
5
Но мне нужно получить пустое значение как пустую строку, когда я встречаю последовательные разделители, например, ,,
в этом случае. т.е. Мне нужно, чтобы результат был таким: Разделение строки «1,2,3,4,5» на токены:
1
2
3
4
5
Любое средство?
"1,2,,3,4,5"
---›"1,2, ,3,4,5"
Нет простых способов сделать это. Вы должны проверить адреса, возвращаемые strtok, и проверить, равна ли разница == 1. - person LPs   schedule 31.03.2017strpbrk
, как предложено по ссылке @FredLarson - person Chris Turner   schedule 31.03.2017strlen(pch)
и игнорируйте его, если он равен нулю. - person Carey Gregory   schedule 31.03.2017