重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了麻章免费建站欢迎大家使用!
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("创建DOMDocument对象失败。\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;
}
// 根节点取得
MSXML2::IXMLDOMElementPtr root = pDoc-documentElement;
// 取得根节点的名字
_variant_t strRootName = root-nodeName;
_bstr_t wstrRootName(strRootName.bstrVal);
MSXML2::IXMLDOMNodeListPtr nodeList = root-GetchildNodes();//cases
// 解析cases的子节点
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节点下的子节点
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;
// 节点的值,如何取得?
if (0 == strNodeName.CompareNoCase(_T("NO")))
{
strNo = (BSTR)strCaseNodeValue.pbstrVal;
// 取得的值可以打印出来
printf(strNo);
}
// 节点有属性值,该怎么处理?
else if (0 == strNodeName.CompareNoCase(_T("CopyFile")))
{
strSrcFile.Empty();
strDestFile.Empty();
// 取得节点的属性值
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,我们需要引入相应的dll,代码如下;
#import "msxml4.dll"
不一样,接口是系统和标准本身就支持的很多结构,函数,头文件,参数的集合。
而函数既可以用接口中已有的,也可以自己定义和声明,是具有一定功能和实际用处的一段代码的表现形式。
希望对您有所帮助,多看看概念,打好基础才能用好c
在dll中申明函数原型,在delphi中写一个与申明一样的函数,然后把函数指针传给dll,dll中运行这个函数这个函数的参数可以双向传剃
如果是标准库函数, 都已经封装好了,直接引用对应头文件, 调用即可
如果是自己写的C文件, 调用的时候 需要加上extern "C"声明
C语言中接口和函数其实没什么差别,只是有些人的习惯问题,不过一叫接口的都是针对某一个模块的功能函数集合,像一个图片采集模块一般就会有三种方式,1、头文件和.c文件;2、头文件和.so动态库;3、头文件和.a静态库。在进行程序编写时我们要添加头文件,在进行编译时,必须加入,该模块的.c或.so或.a,一种就行。
一般我们编写小函数接口,一般需要一个.h和一个.c就行了。函数的声明都是在.h中,实现都在.c中,当模块编写.c有点大时,我们可以为了编译时的速度,把.c文件编译成.so和.a。
//hello.h
#ifndef _HELLO_H_
#define _HELLO_H_
//#define 宏定义也应该在这
#include stdio.h
void hello();
#endif
//hello.c
#inlcude "hello.h"
void hello() {
printf("Hello word!");
}
大概就是这样,只不过我是linux下的,函数接口定义大同小异吧