访问冲突写入位置0x0120FA68

时间:2015-06-05 23:06:01

标签: c++

所以我试图为c ++编写一个程序,用空格分割文本,我不断收到错误访问违规写入位置0x0120FA68。这是代码:

#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <list>
#include <vector>

int main(int argc, char* argv[])
{

    std::vector<char*> testVector;

    char* string1 = "test f";

    char seperators[] = " ";
    char* token1;
    char *next_token1;

    int counter = 0;
    token1 = strtok_s(string1, seperators, &next_token1);

    while (token1 != NULL)
    {
        if (token1 != NULL)
        {
            std::cout << "\n" << token1 << std::endl;
            testVector.push_back(token1);
            token1 = strtok_s(NULL, seperators, &next_token1);
            counter++;
        }
    }
    std::cout << testVector.at(0);
    system("pause");

    return 0;
}

1 个答案:

答案 0 :(得分:0)

strtok()系列函数修改其输入字符串。您在字符串文字上调用它,一些编译器存储在内存中,而不是用户可写的。您可以使用strcpy()将字符串文字复制到缓冲区中来解决此问题,然后您可以自由修改该缓冲区。