Мало аргументов в вызову функции в строках

Подскажите пожалуйста, что у меня неправильно, компилятор выдает ошибку "Мало аргументов в вызове функции" в strtok_s(buf, DELIM) Вот код:

#include "stdio.h"
#include "string.h"
#include "locale.h"
#define BUF_SIZE  1024
#define MAX_WORDS 100
#define DELIM " ,.!?:;()\t\n"

    int main()
    {
        char *words[MAX_WORDS];
        int nWords = 0;

        char buf[BUF_SIZE];
        printf("Text: ");
        fgets(buf, BUF_SIZE, stdin);

        char *p = strtok_s(buf, DELIM);
        while (p && nWords < MAX_WORDS)
        {
            words[nWords++] = p;
            p = strtok_s(NULL, DELIM);
        }

        printf("Number of words: %d\n\n", nWords);

        for (int i = 0; i<nWords; i++)
        {
            int k = 0;

            for (int j = 0; j<nWords; j++)
            {
                if (j == i) {
                    k = 1;
                }
                else if (strcmp(words[i], words[j]) == 0)
                {
                    if (j < i)
                        break;
                    else
                        k++;
                }
            }

            if (k > 0)
                printf("%-15s: %d\n", words[i], k);
        }
    }

Ответы (1 шт):

Автор решения: Harry

Ага, в Visual C++ - вы, видимо, с ним работаете? - надо три параметра. Вот как это выглядит в VC++:

char * ctx;

char buf[BUF_SIZE];
printf("Text: ");
fgets(buf, BUF_SIZE, stdin);

char *p = strtok_s(buf, DELIM, &ctx);
while (p && nWords < MAX_WORDS)
{
    words[nWords++] = p;
    p = strtok_s(NULL, DELIM, &ctx);
}

Привел только измененный кусок кода.

→ Ссылка