所以我试图为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;
}
答案 0 :(得分:0)
strtok()
系列函数修改其输入字符串。您在字符串文字上调用它,一些编译器存储在内存中,而不是用户可写的。您可以使用strcpy()
将字符串文字复制到缓冲区中来解决此问题,然后您可以自由修改该缓冲区。