如何使用C++更改,替換或刪除文本文件中的一行?如何使用C++更改,替換或刪除文本文件中的一行?
我有一個包含用戶的登錄信息(用戶名和密碼),例如文本文件:
//file
Jimmy jim1236
tom tommy545
現在我怎麼能寫一個程序,它允許用戶在登錄到後更改自己的密碼系統?我已經完成了登錄部分。
如何使用C++更改,替換或刪除文本文件中的一行?如何使用C++更改,替換或刪除文本文件中的一行?
我有一個包含用戶的登錄信息(用戶名和密碼),例如文本文件:
//file
Jimmy jim1236
tom tommy545
現在我怎麼能寫一個程序,它允許用戶在登錄到後更改自己的密碼系統?我已經完成了登錄部分。
1 /打開與寫模式(的fopen)
2 /去所需位置(FSEEK)文件
3 /寫在當前位置(的fwrite)
4 /關閉文件(FCLOSE)
你確定這不寫在下一行? (另外,C++爲處理文件提供了更安全的工具。) – 2011-12-21 12:54:35
我很抱歉,但這是一種破壞性的方法。 – 2011-12-21 12:55:07
非常感謝您的回答:) – 2011-12-21 13:28:08
你不能」直接做沒有問題:你不能從文件中刪除的信息,你將不得不通過較長的文件直接在等替換字符串的問題。
您可以加載該文件內容存儲,管理與您的需求信息,並保存在正確的方式的信息。
也許你需要一個User
類來填充,一個用戶容器來管理所有的信息和類來封裝文件訪問和容器填充。
試試下面的僞代碼:
Open the source file
Open a temporary file
Read a line from the source file
While Not EOF Do
Search the line for the user name
If found, replace the password in the line
Write the line to the temporary file
Read a line from the source file
Wend
Close the source file
Close the temporary file
Delete the source file
Rename the temporary file to the source file name.
非常感謝您的回答:) – 2011-12-21 13:28:54
但發生了什麼是存儲在文件中的數據的其餘部分?我會一直這樣失去他們,不是嗎? – 2011-12-21 13:31:24
不,因爲您將源文件中的所有行寫入臨時文件。 「如果找到」僅適用於替換,而不適用於寫入。 – zennehoy 2011-12-21 14:17:49
下面的代碼,在一個文件替換文本,將指向你在正確的方向:replace line in a file C++
那不打我作爲一個非常安全的方式來存儲密碼,特別是如果該文件將被所有人閱讀。 – NPE 2011-12-21 12:50:24
Off topic:存儲明文密碼==糟糕的主意。實現你自己的認證==不好的主意。 – ArjunShankar 2011-12-21 12:51:38
實現一些預期用於'保護'某些東西,當初學者仍然是C++ ==壞主意時。 – ArjunShankar 2011-12-21 12:52:42