strtok - переполнение буфера - PullRequest
1 голос
/ 03 сентября 2010

c ++ function, strtok () cplusplus.com

Будет ли этот пример страдать из-за переполнения буфера, если str не завершится должным образом?

/* strtok example */
/* source - cplusplus.com (see link below) */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-"); // walk the stack?
  }
  return 0;
}

Если str неправильно завершен с "\ 0", невозможно для

pch = strtok (NULL, " ,.-");

пройтись по стеку?

Спасибо!

1 Ответ

1 голос
/ 03 сентября 2010

Большинство функций обработки строк уйдут с конца, если строка не оканчивается нулем.

Однако в вашем примере кода str завершается.

...