Мало аргументов в вызову функции в строках
Подскажите пожалуйста, что у меня неправильно, компилятор выдает ошибку "Мало аргументов в вызове функции" в 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);
}
Привел только измененный кусок кода.