CSharp学习笔记视图Word文件下载.docx

上传人:b****3 文档编号:16845312 上传时间:2022-11-26 格式:DOCX 页数:19 大小:27.57KB
下载 相关 举报
CSharp学习笔记视图Word文件下载.docx_第1页
第1页 / 共19页
CSharp学习笔记视图Word文件下载.docx_第2页
第2页 / 共19页
CSharp学习笔记视图Word文件下载.docx_第3页
第3页 / 共19页
CSharp学习笔记视图Word文件下载.docx_第4页
第4页 / 共19页
CSharp学习笔记视图Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

CSharp学习笔记视图Word文件下载.docx

《CSharp学习笔记视图Word文件下载.docx》由会员分享,可在线阅读,更多相关《CSharp学习笔记视图Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

CSharp学习笔记视图Word文件下载.docx

youApp.lib

6.选择你的目标工程HeadFiles加入:

youApp.h文件;

7.最后在你目标工程(*.cpp,需要调用DLL中的函数)中包含你的:

#include“youApp.h”

注:

youApp是你DLL的工程名。

(二).动态调用其程序如下:

动态调用时只需做静态调用步骤1.

HINSTANCEhDllInst=LoadLibrary(“youApp.DLL”);

if(hDllInst)

typedefDWORD(WINAPI*MYFUNC)(DWORD,DWORD);

MYFUNCyouFuntionNameAlias=NULL;

//youFuntionNameAlias函数别名

youFuntionNameAlias=(MYFUNC)GetProcAddress

(hDllInst,”youFuntionName”);

//youFuntionName在DLL中声明的函数名

if(youFuntionNameAlias)

youFuntionNameAlias(param1,param2);

}

FreeLibrary(hDllInst);

classExecuteRectangle

staticvoidMain(string[]args)

Rectangler=newRectangle();

r.Acceptdetails();

r.Display();

Console.ReadLine();

当上面的代码被编译和执行时,它会产生下列结果:

4.5

3.5

15.75

using关键字

在任何C#程序中的第一条语句都是:

using关键字用于在程序中包含命名空间。

一个程序可以包含多个using语句。

class关键字

class关键字用于声明一个类。

C#中的注释

注释是用于解释代码。

编译器会忽略注释的条目。

在C#程序中,多行注释以/*开始,并以字符*/终止,如下所示:

/*Thisprogramdemonstrates

ThebasicsyntaxofC#programming

Language*/

单行注释是用'

//'

符号表示。

例如:

}//endclassRectangle

typedefstruct{

  intlevel;

           /*fill/emptylevelofbuffer*/

  unsignedflags;

      /*Filestatusflags*/

  charfd;

           /*Filedescriptor*/

  unsignedcharhold;

    /*Ungetccharifnobuffer*/

  intbsize;

          /*Buffersize*/

  unsignedchar_FAR*buffer;

 /*Datatransferbuffer*/

  unsignedchar_FAR*curp;

  /*Currentactivepointer*/

  unsignedistemp;

      /*Temporaryfileindicator*/

  shorttoken;

        /*Usedforvaliditychecking*/

}FILE;

            /*ThisistheFILEobject*/

复制代码

  FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能

  fopen()打开流

  fclose()关闭流

  fputc()写一个字符到流中

  fgetc()从流中读一个字符

  fseek()在流中定位到指定的字符

  fputs()写字符串到流

  fgets()从流中读一行或指定个字符

  fprintf()按格式输出到流

  fscanf()从流中按格式读取

  feof()到达文件尾时返回真值

  ferror()发生错误时返回其值

  rewind()复位文件定位器到文件开始处

  remove()删除文件

  fread()从流中读指定个数的字符

  fwrite()向流中写指定个数的字符

  tmpfile()生成一个临时文件流

  tmpnam()生成一个唯一的文件名

下面就介绍一下这些函数

1.fopen()

  fopen的原型是:

FILE*fopen(constchar*filename,constchar*mode),fopen实现三个功能

  为使用而打开一个流

  把一个文件和此流相连接

  给此流返回一个FILR指针

  参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下表

  字符串含义

  "

r"

以只读方式打开文件

w"

以只写方式打开文件

a"

以追加方式打开文件

r+"

以读/写方式打开文件,如无文件出错

w+"

以读/写方式打开文件,如无文件生成新文件

  一个文件可以以文本模式或二进制模式打开,这两种的区别是:

在文本模式中回车被当成一个字符'

/n'

,而二进制模式认为它是两个字符0x0D,0x0A;

如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

  系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;

就设置默认打开方式为文本模式;

而_fmode=O_BINARY;

则设置默认打开方式是二进制模式。

  我们也可以在模式字符串中指定打开的模式,如"

rb"

表示以二进制模式打开只读文件,"

w+t"

或"

wt+"

表示以文本模式打开读/写文件。

  此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL。

 FILE*fp;

  if(fp=fopen("

123.456"

"

wb"

))

  puts("

打开文件成功"

);

  else

打开文件成败"

2.fclose()

  fclose()的功能就是关闭用fopen()打开的文件,其原型是:

intfclose(FILE*fp);

如果成功,返回0,失败返回EOF。

  在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况,我以前就经常犯这样的毛病。

例:

fclose(fp);

3.fputc()

  向流写一个字符,原型是intfputc(intc,FILE*stream);

成功返回这个字符,失败返回EOF。

4.fgetc()

  从流中读一个字符,原型是intfputc(FILE*stream);

5.fseek()

  此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是intfseek(FILE*stream,longoffset,intwhence);

如果成功返回0,参数offset是移动的字符数,whence是移动的基准,取值是

  符号常量值基准位置

  SEEK_SET0文件开头

  SEEK_CUR1当前读写的位置

  SEEK_END2文件尾部

  例:

fseek(fp,1234L,SEEK_CUR);

//把读写位置从当前位置向后移动1234字节(L后缀表示长整数)

  fseek(fp,0L,2);

//把读写位置移动到文件尾

6.fputs()

  写一个字符串到流中,原型intfputs(constchar*s,FILE*stream);

fputs("

ILoveYou"

fp);

7.fgets()

  从流中读一行或指定个字符,原型是char*fgets(char*s,intn,FILE*stream);

从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。

  fgets(str1,4,file1);

  则执行后str1="

Lov"

,读取了4-1=3个字符,而如果用

  fgets(str1,23,file1);

  则执行str="

Love,IHave"

,读取了一行(不包括行尾的'

)。

8.fprintf()

  按格式输入到流,其原型是intfprintf(FILE*stream,constchar*format[,argument,...]);

其用法和printf()相同,不过不是写到控制台,而是写到流罢了

fprintf(fp,"

%2d%s"

4,"

Hahaha"

9.fscanf()

  从流中按格式读取,其原型是intfscanf(FILE*stream,constchar*format[,address,...]);

其用法和scanf()相同,不过不是从控制台读取,而是从流读取罢了。

fscanf(fp,"

%d%d"

&

x,&

y);

10.feof()

  检测是否已到文件尾,是返回真,否则返回0,其原型是intfeof(FILE*stream);

if(feof(fp))printf("

已到文件尾"

11.ferror()

  原型是intferror(FILE*stream);

返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是voidclearerr(FILE*stream);

printf("

%d"

ferror(fp));

12.rewind()

  把当前的读写位置回到文件开始,原型是voidrewind(FILE*stream);

其实本函数相当于fseek(fp,0L,SEEK_SET);

rewind(fp);

13.remove()

  删除文件,原型是intremove(constchar*filename);

参数就是要删除的文件名,成功返回0。

14.fread()

  从流中读指定个数的字符,原型是size_tfread(void*ptr,size_tsize,size_tn,FILE*stream);

参数ptr是保存读取的数据,void*的指针可用任何类型的指针来替换,如char*、int*等等来替换;

size是每块的字节数;

n是读取的块数,如果成功,返回实际读取的块数(不是字节数),本函数一般用于二进制模式打开的文件中。

charx[4230];

  FILE*file1=fopen("

c:

//msdos.sys"

  fread(x,200,12,file1);

//共读取200*12=2400个字节

15.fwrite()

  与fread对应,向流中写指定的数据,原型是size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream);

参数ptr是要写入的数据指针,void*的指针可用任何类型的指针来替换,如char*、int*等等来替换;

n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中。

  charx[]="

;

  fwire(x,6,12,fp);

//写入6*12=72字节

  将把"

ILove"

写到流fp中12次,共72字节

16.tmpfile()

  其原型是FILE*tmpfile(void);

生成一个临时文件,以"

w+b"

的模式打开,并返回这个临时流的指针,如果失败返回NULL。

在程序结束时,这个文件会被自动删除。

FILE*fp=tmpfile();

17.tmpnam();

  其原型为char*tmpnam(char*s);

生成一个唯一的文件名,其实tmpfile()就调用了此函数,参数s用来保存得到的文件名,并返回这个指针,如果失败,返回NULL。

borlandc++bulder的文件操作总结2

二、直接I/O文件操作

  这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;

流式文件操作是围绕一个FILE指针来进行,而此类文件操作是围绕一个文件的"

句柄"

来进行,什么是句柄呢?

它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。

此类文件操作常用的函数如下表,这些函数及其所用的一些符号在io.h和fcntl.h中定义,在使用时要加入相应的头文件。

  函数说明

  open()打开一个文件并返回它的句柄

  close()关闭一个句柄

  lseek()定位到文件的指定位置

  read()块读文件

  write()块写文件

  eof()测试文件是否结束

  filelength()取得文件长度

  rename()重命名文件

  chsize()改变文件长度

下面就对这些函数一一说明:

1.open()

  打开一个文件并返回它的句柄,如果失败,将返回一个小于0的值,原型是intopen(constchar*path,intaccess[,unsignedmode]);

参数path是要打开的文件名,access是打开的模式,mode是可选项。

表示文件的属性,主要用于UNIX系统中,在DOS/WINDOWS这个参数没有意义。

其中文件的打开模式如下表。

  符号含义符号含义符号含义

  O_RDONLY只读方式O_WRONLY只写方式O_RDWR读/写方式

  O_NDELAY用于UNIX系统O_APPEND追加方式O_CREAT如果文件不存在就创建

  O_TRUNC把文件长度截为0O_EXCL和O_CREAT连用,如果文件存在返回错误O_BINARY二进制方式

  O_TEXT文本方式

  对于多个要求,可以用"

|"

运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件。

inthandle=open("

O_BINARY|O_CREAT|O_WRITE)

2.close()

  关闭一个句柄,原型是intclose(inthandle);

如果成功返回0

close(handle)

3.lseek()

  定位到指定的位置,原型是:

longlseek(inthandle,longoffset,intfromwhere);

参数offset是移动的量,fromwhere是移动的基准位置,取值和前面讲的fseek()一样,SEEK_SET:

文件首部;

SEEK_CUR:

文件当前位置;

SEEK_END:

文件尾。

此函数返回执行后文件新的存取位置。

  lseek(handle,-1234L,SEEK_CUR);

//把存取位置从当前位置向前移动1234个字节。

  x=lseek(hnd1,0L,SEEK_END);

//把存取位置移动到文件尾,x=文件尾的位置即文件长度

4.read()

  从文件读取一块,原型是intread(inthandle,void*buf,unsignedlen);

参数buf保存读出的数据,len是读取的字节。

函数返回实际读出的字节。

charx[200];

read(hnd1,x,200);

5.write()

  写一块数据到文件中,原型是intwrite(inthandle,void*buf,unsignedlen);

参数的含义同read(),返回实际写入的字节。

charx[]="

write(handle,x,strlen(x));

6.eof()

  类似feof(),测试文件是否结束,是返回1,否则返回0;

原型是:

inteof(inthandle);

while(!

eof(handle1)){……};

7.filelength()

  返回文件长度,原型是longfilelength(inthandle);

相当于lseek(handle,0L,SEEK_END)

longx=filelength(handle);

8.rename()

  重命名文件,原型是intrename(constchar*oldname,constchar*newname);

参数oldname是旧文件名,newname是新文件名。

成功返回0

rename("

//config.sys"

//config.w40"

9.chsize();

  改变文件长度,原型是intchsize(inthandle,longsize);

参数size表示文件新的长度,成功返回0,否则返回-1,如果指定的长度小于文件长度,则文件被截短;

如果指定的长度大于文件长度,则在文件后面补'

/0'

chsize(handle,0x12345);

--------------------------------------------------------------------------------

  如果熟悉汇编可能会发现这种方式和汇编语言的DOS功能调用句柄式文件操作很像,比如open()就像DOS服务的3CH号功能调用,其实这种操作还有两种类型的函数就是直接用DOS功能来完成的,如_open(),_dos_open()等等。

有兴趣可自已查询BCB的帮助。

  同流式文件操作相同,这种也提供了Unicode字符操作的函数,如_wopen()等等,用于9X/NT下的宽字符编程,有兴趣可自已查询BCB的帮助。

  另外,此种操作还有lock(),unlock(),locking()等用于多用户操作的函数,但在BCB中用得并不多,我就不介绍了,但如果要用C来写CGI,这些就必要的常识了,如果你有这方面的要求,那就得自已好好看帮助了。

  到这里,我就把基于C的文件操作介绍完了,下一篇将介绍基于C++的文件操作,敬请期待。

在C++中,有一个stream这个类,所有的I/O都以这个"

流"

类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:

1、插入器(<

<

  向流输出数据。

比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<

"

WriteStdout"

'

就表示把字符串"

和换行字符('

)输出到标准输出流。

2、析取器(>

>

  从流中输入数据。

比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>

x;

就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。

在C++中,对文件的操作是通过stream的子类fstream(filestream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。

下面就把此类的文件操作过程一一道来。

一、打开文件

  在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:

  voidopen(constchar*filename,intmode,intaccess);

  参数:

  filename:

  要打开的文件名

  mode:

    要打开文件的方式

  access:

   打开文件的属性

  打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:

  ios:

:

app:

   以追加的方式打开文件

ate:

   文件打开后定位到文件尾,ios:

app就包含有此属性

binary:

 以二进制方式打开文件,缺省的方式是文本方式。

两种方式的区别见前文

in:

   文件以输入方式打开

out:

   文件以输出方式打开

nocreate:

不建立文件,所以文件不存在时打开失败 

noreplace:

不覆盖文件,所以打开文件时如果文件存在失败

trunc:

  如果文件存在,把文件长度设为0

  可以用"

把以上属性连接起来,如ios:

out|ios:

binary

  打开文件的属性

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1