-2
CStringArray myArray;
myArray.copy(copiedsomeelements);
CString file1="myfile1";
CString file2="myfile2";
FILE *fp1,*fp2;
CString linetocompare="mytext";
fp1 = fopen(myfile1, "rb");
fread(data, 1280, 1, fp1);
fclose(fp1);
TCHAR * pch = _tcstok(data, _T("\r\n"));
fp2 = fopen(myfile2, "w"); //open new file
for (int m = 0; m < myArray.GetCount(); m++)
{
CString temp(pch);
if (strcmp(myArray.GetAt(m), linetocompare) != NULL)
{
fprintf(fp2, "%s", temp);
fwrite("\r\n", 1, 1, fp2);
}
pch = _tcstok(NULL, _T("\r\n"));
}
fclose(fp2);
remove(myfile1); //remove old file
rename(myfile2, myfile1);
上述代碼對我來說很好,但並不是所有的時間。有時它會在不比較「linetocomapare」元素的情況下直接寫入「myfile2」。 請幫我這個。 讓我知道是否需要澄清。謝謝。在vC++中刪除文件的元素
您正在閱讀的任意數據塊。例如,那些不需要包含完整的「\ r \ n」序列,也沒有任何保證,您的搜索項不會跨越連續的塊。因爲這個問題被標記爲[tag:C++],所以你應該使用C++。那就是:[std :: getline](http://en.cppreference.com/w/cpp/string/basic_string/getline)。不過,這段代碼中還有更多的錯誤。請參閱您的介紹性書籍。 – IInspectable
謝謝你幫助我改進。 –