我想用文件中的其他字符串覆蓋字符串的某些部分。c中的文件處理替換字符串
我想覆蓋文件的每一行。
我寫了下面的代碼,但這不行,請幫忙。
假設文件有多個線,其中線containe之一:--- abcdefghioverwritefxyz89760
應該如下轉變: - abcdefghichangemadexyz89760
char lineFileRecord [150];
fp = fopen("abc.txt","r+");
while (fgets (lineFileRecord , 150 , fp) != NULL)
{
char* sample;
sample = strstr(lineFileRecord, "overwritef");
//overwritef and changemade both have same size
if(sample != NULL)
{
strncpy(sample, "changemade",10); // is the the correct way.
}
}
以上代碼不會取代內容。的文件。 如果我錯了,請糾正我。
感謝您的回覆。
您需要將更改後的數據以正確的偏移量寫回文件。 – GWW 2014-09-04 15:09:01
當文件的內容逐行讀入內存時,除非您採取措施寫入內容,否則內存中所做的任何更改都不會反映迴文件。請注意,您必須打開文件以進行更新,並且在每次寫入後必須在每次讀取之後尋找;當您在讀取和寫入之間切換或反之亦然時,兩個I/O操作之間必須執行查找操作(或等效操作 - 請參閱C標準)。如果你有一個內存映射文件,規則將會不同(從''你不會使用'fgets()'和一個內存映射文件'')。 – 2014-09-04 15:18:45
你能解釋清楚嗎? – ashutosh 2014-09-04 15:29:04