c语言createfile函数用法

Python010

c语言createfile函数用法,第1张

1、CreateFile 是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道。

2、例程:

#include <windows.h>

int main()

{

    HANDLE hf = CreateFile(TEXT("C:\\testa.bin"), GENERIC_WRITE, 0,

        0, CREATE_ALWAYS, 0, 0)

    DWORD written

    WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0)

    CloseHandle(hf)

    hf = CreateFile(TEXT("c:\\testb.bin"), GENERIC_WRITE, 0,

        0, OPEN_ALWAYS, 0, 0)

    SetFilePointer(hf, 0, 0, FILE_END)

    WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0)

    CloseHandle(hf)

    return 0

}

//要另外说下如fprintf(stderr, "Can't open %s\n", file_app)这是向文件或者系统设备输出的函数;但他的文件指针为stderr;这是c中的标准错误输出设备指针,系统自动分配为显示器故相当于printf("Can't open %s\n", file_app)

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define BUFSIZE 1024

#define SLEN 81

void append(FILE *source, FILE *dest)

int main(void)

{

FILE *fa, *fs//定义2个文件类型指针

int files = 0 // 追加文件个数

char file_app[SLEN]

char file_src[SLEN] // 2个字符串用来储存文件名;

puts("Enter name of destination file:")//输出Enter name of destination file:

gets(file_app)//输入要追加的文件名

if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打开文件,如果打开失败退出;

{

fprintf(stderr, "Can't open %s\n", file_app)

exit(2)

}

if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败退出

{

fputs("Can't create output buffer\n", stderr)

exit(3)

}

puts("Enter name of first source file (empty line to quit):")//输出Enter name of first source file (empty line to quit):

while (gets(file_src) &&file_src[0] != '\0')//输入源文件如果是空串结束循环

{

if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同

fputs("Can't append file to itself\n",stderr)

else if ((fs = fopen(file_src, "r")) == NULL)//如果打开源文件失败

fprintf(stderr, "Can't open %s\n", file_src)

else

{

if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败开始下次循环

{

fputs("Can't create input buffer\n",stderr)

continue

}

append(fs, fa)//函数

if (ferror(fs) != 0)//检查文件操作是否有错

fprintf(stderr,"Error in reading file %s.\n",

file_src)

if (ferror(fa) != 0)

fprintf(stderr,"Error in writing file %s.\n",

file_app)

fclose(fs)//关闭源文件

files++//追加文件数+1

printf("File %s appended.\n", file_src)

puts("Next file (empty line to quit):")

}

}

printf("Done. %d files appended.\n", files)

fclose(fa)//关闭追加文件

return 0

}

void append(FILE *source, FILE *dest)

{

size_t bytes

static char temp[BUFSIZE]

while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) >0)//把源文件的内容追加到追加文件,块大小sizeof(char),块数为BUFSIZE

fwrite(temp, sizeof (char), bytes, dest)//写文件块大小sizeof(char),块数为BUFSIZE

}