2011-12-21 173 views
-1

如何使用C++更改,替換或刪除文本文件中的一行?如何使用C++更改,替換或刪除文本文件中的一行?

我有一個包含用戶的登錄信息(用戶名和密碼),例如文本文件:

//file 
Jimmy jim1236 
tom tommy545 

現在我怎麼能寫一個程序,它允許用戶在登錄到後更改自己的密碼系統?我已經完成了登錄部分。

+2

那不打我作爲一個非常安全的方式來存儲密碼,特別是如果該文件將被所有人閱讀。 – NPE 2011-12-21 12:50:24

+3

Off topic:存儲明文密碼==糟糕的主意。實現你自己的認證==不好的主意。 – ArjunShankar 2011-12-21 12:51:38

+3

實現一些預期用於'保護'某些東西,當初學者仍然是C++ ==壞主意時。 – ArjunShankar 2011-12-21 12:52:42

回答

-3

1 /打開與寫模式(的fopen)

2 /去所需位置(FSEEK)文件

3 /寫在當前位置(的fwrite)

4 /關閉文件(FCLOSE)

+0

你確定這不寫在下一行? (另外,C++爲處理文件提供了更安全的工具。) – 2011-12-21 12:54:35

+0

我很抱歉,但這是一種破壞性的方法。 – 2011-12-21 12:55:07

+0

非常感謝您的回答:) – 2011-12-21 13:28:08

2

你不能」直接做沒有問題:你不能從文件中刪除的信息,你將不得不通過較長的文件直接在等替換字符串的問題。

您可以加載該文件內容存儲,管理與您的需求信息,並保存在正確的方式的信息。

也許你需要一個User類來填充,一個用戶容器來管理所有的信息和類來封裝文件訪問和容器填充。

2

試試下面的僞代碼:

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. 
+0

非常感謝您的回答:) – 2011-12-21 13:28:54

+0

但發生了什麼是存儲在文件中的數據的其餘部分?我會一直這樣失去他們,不是嗎? – 2011-12-21 13:31:24

+0

不,因爲您將源文件中的所有行寫入臨時文件。 「如果找到」僅適用於替換,而不適用於寫入。 – zennehoy 2011-12-21 14:17:49

相關問題