#includestdio.h
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了麻章免費建站歡迎大家使用!
void main()
{
FILE *fp;
int i;
fp=fopen("ffff.doc","w");
for(i=0;i100;i++)
fprintf(fp,"%d\n",i);
close(fp);
}
/***************
?xml?version="1.0"?encoding="utf-8"?
Cases
case
No001/No
CopyFile?src="C:\test.txt"?dest="D:\test.txt"/CopyFile
/case
case
No002/No
DelFileC:\test.txt/DelFile
/case
/Cases
*******************/
//?我們用MFC來讀取上述xml,代碼如下:
void?ReadXml(CString?strXmlPath)
{
MSXML2::IXMLDOMDocumentPtr?pDoc;
::CoInitialize(NULL);
HRESULT?hr?=?pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));?
if?(!SUCCEEDED(hr))?
{??
MessageBox(_T("創(chuàng)建DOMDocument對象失敗。\n請檢查運行環(huán)境"),?_T("錯誤"),?MB_ICONERROR);?
return;
}
//?讀取xml
pDoc-put_async(VARIANT_FALSE);
VARIANT_BOOL?bhr?=?pDoc-load((_variant_t)strXmlPath);
if?(bhr?!=?VARIANT_TRUE)?{
MessageBox(_T("無法正確讀取xml文件"),?_T("錯誤"),?MB_ICONERROR);
return;
}
//?根節(jié)點取得
MSXML2::IXMLDOMElementPtr?root?=?pDoc-documentElement;
//?取得根節(jié)點的名字
_variant_t?strRootName?=?root-nodeName;
_bstr_t?wstrRootName(strRootName.bstrVal);
MSXML2::IXMLDOMNodeListPtr?nodeList?=?root-GetchildNodes();//cases
//?解析cases的子節(jié)點
ReadCases(nodeList);
}
void?ReadCases(MSXML2::IXMLDOMNodeListPtr?nodeList)
{
int?ilength?=?nodeList-Getlength();
for?(int?nodeCount?=?0;?nodeCount??ilength;?nodeCount++)?{
MSXML2::IXMLDOMNodePtr?nodePtr?=?nodeList-nextNode();
_variant_t?strNodeName?=?nodePtr-GetnodeName();
_variant_t?strNodeValue?=?nodePtr-GetnodeValue();
//?讀取case節(jié)點下的子節(jié)點
ReadCase(nodePtr-GetchildNodes());
}
}
void?ReadCase(MSXML2::IXMLDOMNodeListPtr?nodeList)
{
CString?strLogInfo;
strLogInfo.Empty();
CString?strNo;??????????????//?case編號
CString?strSrcFile;?????????//?源文件
CString?strDestFile;????????//?目標文件
for?(int?nodeCount?=?0;?nodeCount??nodeList-Getlength();?nodeCount++)
{
MSXML2::IXMLDOMNodePtr?nodePtr?=?nodeList-nextNode();
_variant_t?strCaseNodeName?=?nodePtr-GetnodeName();
_variant_t?strCaseNodeValue?=?nodePtr-Gettext();
BSTR?bStrTemp?=?strCaseNodeName.bstrVal;
CString?strTemp?=?CString(bStrTemp);
SysFreeString(bStrTemp);
CString?strNodeName?=?strTemp;
//??節(jié)點的值,如何取得?
if?(0?==?strNodeName.CompareNoCase(_T("NO")))
{
strNo?=?(BSTR)strCaseNodeValue.pbstrVal;
//?取得的值可以打印出來
printf(strNo);
}
//?節(jié)點有屬性值,該怎么處理?
else?if?(0?==?strNodeName.CompareNoCase(_T("CopyFile")))
{
strSrcFile.Empty();
strDestFile.Empty();
//?取得節(jié)點的屬性值
MSXML2::IXMLDOMNamedNodeMapPtr?pDOMAttrList=?nodePtr-Getattributes();
for?(int?j?=?0;?j??pDOMAttrList-Getlength();?j++)
{
MSXML2::IXMLDOMNodePtr?pDOMAttr=?pDOMAttrList-Getitem(j);?
//?取得源文件路徑
if?(CompareNoCase((char*)pDOMAttr-GetnodeName(),?_T("src")))
{
strSrcFile?=?pDOMAttr-GetnodeTypedValue();
//?取得目標文件路徑
}?else?if?(CompareNoCase((char*)pDOMAttr-GetnodeName(),?_T("dest")))
{
strDestFile?=pDOMAttr-GetnodeTypedValue();
}
CopyFile(strSrcFile,?strDestFile,?FALSE);
}
else?if?(0?==?strNodeName.CompareNoCase(_T("DelFile")))
{
strDestFile.Empty();
strDestFile?=?CString((BSTR)strCaseNodeValue.pbstrVal);
DeleteFile(strDestFile);
}?
}
}
//?為了能夠讓MFC認識MSXML2,我們需要引入相應(yīng)的dll,代碼如下;
#import?"msxml4.dll"
不一樣,接口是系統(tǒng)和標準本身就支持的很多結(jié)構(gòu),函數(shù),頭文件,參數(shù)的集合。
而函數(shù)既可以用接口中已有的,也可以自己定義和聲明,是具有一定功能和實際用處的一段代碼的表現(xiàn)形式。
希望對您有所幫助,多看看概念,打好基礎(chǔ)才能用好c
在dll中申明函數(shù)原型,在delphi中寫一個與申明一樣的函數(shù),然后把函數(shù)指針傳給dll,dll中運行這個函數(shù)這個函數(shù)的參數(shù)可以雙向傳剃
如果是標準庫函數(shù), 都已經(jīng)封裝好了,直接引用對應(yīng)頭文件, 調(diào)用即可
如果是自己寫的C文件, 調(diào)用的時候 需要加上extern "C"聲明
C語言中接口和函數(shù)其實沒什么差別,只是有些人的習(xí)慣問題,不過一叫接口的都是針對某一個模塊的功能函數(shù)集合,像一個圖片采集模塊一般就會有三種方式,1、頭文件和.c文件;2、頭文件和.so動態(tài)庫;3、頭文件和.a靜態(tài)庫。在進行程序編寫時我們要添加頭文件,在進行編譯時,必須加入,該模塊的.c或.so或.a,一種就行。
一般我們編寫小函數(shù)接口,一般需要一個.h和一個.c就行了。函數(shù)的聲明都是在.h中,實現(xiàn)都在.c中,當(dāng)模塊編寫.c有點大時,我們可以為了編譯時的速度,把.c文件編譯成.so和.a。
//hello.h
#ifndef _HELLO_H_
#define _HELLO_H_
//#define 宏定義也應(yīng)該在這
#include stdio.h
void hello();
#endif
//hello.c
#inlcude "hello.h"
void hello() {
printf("Hello word!");
}
大概就是這樣,只不過我是linux下的,函數(shù)接口定義大同小異吧