Как исправить ошибку компилятора: «функция strtok может быть небезопасна» - PullRequest
0 голосов
/ 01 июня 2019

В настоящее время я пишу программу, которая может преобразовывать несколько математических функций, таких как преобразование чисел с плавающей точкой в ​​косинусы, натуральные журналы и т. Д. Я также включаю способ преобразования формата даты m/dd/yyyy в формат mm-dd-yyyy.Я пытаюсь разметить c-строку символом «/», а затем объединить ее вместе с «-».Проблема в том, что visual studio выдает мне код ошибки C4996 и говорит, что моя функция может быть небезопасной.Я знаю, что могу отключить это, чтобы они не выдавали мне такого рода предупреждения, но когда я запускаю программу, функция strtok, похоже, ничего не делает.

#include <iostream>
#include <cstring>
using namespace std;

//KEEP IN MIND THIS IS ONLY ONE PART OF THE PROGRAM, I have more includes, and this is under the main function. (I only included relevant includes)

//If they enter 4 to convert a cstring date.
    if (input == 4) {
        cout << "You entered: change the format of a cstring date" << endl;
        cout << "Please enter a date in the format of mm/dd/yyyy: " << endl;
        char str[12];   //C-String to hold input
        cin >> str;
        //Create an char[] to hold the answer
        char newStr[32];
        // Returns first token  
        char* token = strtok(str, "/");
        // Keep printing tokens while one of the 
        // delimiters present in str[]. 
        while (token != NULL)
        {
            strcat_s(newStr, token);    //Cat it to string
            strcat_s(newStr, "-");  //Add the -
            token = strtok(NULL, "/");
        }

        cout << "Your new Date is: " << newStr;
        return 0;
    }

Даже когдаЯ пропускаю сообщение об ошибке и запускаю программу, например, введите: 11/22/3333 Я получаю вывод 11/22/3333

...