1. 程式人生 > >Windows API學習之路(二)

Windows API學習之路(二)

今天要講的是

DeleteFile這個函式,這個函式用來刪除一個檔案

函式原型:

BOOL WINAPI DeleteFile(
  _In_  LPCTSTR lpFileName	// 刪除檔名
);

引數

lpFileName 輸入引數

所要刪除的檔案的相對路徑(如”1.txt”相對於當前的路徑) 或絕對路徑 (如”F:1.txt”)。

這裡我們可以看到引數lpFileName是一個常字串指標。

返回值

返回BOOL值,那麼第一節的時候我們也看到過了 BOOL 其實就是int型別的同義字。如果該函式執行成功的話,會返回一個非零的數,如果失敗的話,會返回零。想知道錯誤資訊的話,就請使用 GetLastError 函式。

例項

//思路:首先判斷這個命令是不是強制刪除,有一個方法用來判斷Jud_Choi,如果是的話,呼叫DeleteFile函式是刪除檔案,
//如果不是,迴圈語句詢問是否刪除


#include <windows.h>
#include "tool.h"
#include <iostream>

int main(int argc,char *argv[])
{
	tool tool;
	
	
	
	if (argc == 1)
	{
		tool.help();
		return 0;
	}
	tool.Jud_Choi(argv, argc);
	if (tool.get_Qz_del() == 0)
	{
		//迴圈準備
		//cout << "1"<< endl;
		for (int i = 1; i < argc; i++)
		{
			cout <<"是否刪除檔案"<<argv[i]<< endl;
			cout <<"Y.是"<<"     "<<"N.否"<< endl;
			tool.set_bj();
			if (tool.get_bj()=='Y')
			{
				if (!DeleteFile(argv[i]))
				{
					cout << "刪除失敗" << endl;
					continue;
				}
				else
				{
					cout <<"刪除成功"<< endl;
				}
			}
			else
			{
				continue;
			}
		}
	}
	else
	{
		for (int i = 1; i < argc-1; i++)
		{
			if (!DeleteFile(argv[i]))
			{
				cout <<"刪除失敗"<< endl;
			}
			else
			{
				cout << "刪除成功" << endl;
			}
			
		}
		
	}
}


#include <string.h>
#include <iostream>
using namespace std;
class tool
{
public:
	void Jud_Choi(char *x[], int count);
	void help();
	int get_Qz_del();
	void set_bj();
	char get_bj();
private:
	int Qz_del;
	char bj;
};
void tool::help()
{
	cout <<"rm2 <檔名>... <選項>"<< endl;
}
void tool::Jud_Choi(char *x[], int count)
{
	for (int i = 1; i < count; i++)
	{
		if (*x[i] == '-')
		{
			if ((strcmp(x[i], "-f")) == 0)
			{
				Qz_del = 1;
			}
			
		}
		else
		{
			Qz_del = 0;
		}
	}
}
int tool::get_Qz_del()
{
	return Qz_del;
}
void tool::set_bj()
{
	cin >> bj;
}
char tool::get_bj()
{
	return bj;
}

下面是我定義的工具類用來存放各種用到的函式和封裝成員資料。

在用virual stadio 2013編譯的過程中,也出現了一些問題:

這個問題通過上網求解終於解決了:


只需要將熒光筆標註的地方改成使用多位元組字符集。

2.vs2013無法查詢或開啟pdb檔案

解決方法:

將Microsoft符號伺服器勾上就好。

再看一下執行結果吧


很棒,就這樣。

Busy for living or Busy for dying.

/*已經是第三遍了,再傳不上去我也沒辦法了*/