我使用sprintf()但是,我收到訪問衝突錯誤;sprintf無法正常工作 - 導致訪問衝突
僅當字符串的內容僅包含3個或更少的整數時纔會出現此錯誤。 (顯示在下面)
這是一種從txt文件中讀取整數並對它們進行排序的方法;
string getIntsFromFile() {
ifstream myfile("/pathToFile/file.txt");
vector<int> values;
int value = 0;
string testString;
while (!myfile.eof())
{
myfile >> value;
if (myfile.eof()) break;
values.push_back(value);
}
sort(values.begin(), values.end(), greater<int>());
for (int i = 0; i < values.size(); i++)
testString = testString + to_string(values[i]) + "\n";
return testString;
}
然後我使用這個函數;
char myString[128];
sprintf(myString, "%s", getIntsFromFile());
這只是否有txt文件超過3個整數,但任何減少提示訪問衝突錯誤的作品。
txt文件中的整數由'\ n'分隔,所以每行只有一個整數。
你應該提供實際的代碼,而不是你記得的。我懷疑'sprintf(myString,「%s」,getIntsFromFile());'會編譯。提供MCVE – Slava 2015-03-31 16:41:25
'while(!myfile.eof())'是錯誤的。使用'while(myfile >> value)' – 2015-03-31 16:43:16
'sprintf'與「%s」格式說明符需要'char *'參數。 'getIntsFromFile()'返回一個'std :: string'。試試'getIntsFromFile()。c_str()'。 – SleuthEye 2015-03-31 16:43:43