精华内容
下载资源
问答
  • 文件属性变更器.1.1

    2009-09-14 11:52:35
    文件属性变更器 ...目前我所知道的这个小程序的缺点是,能识别超长路径(我数过,包括盘符一直到文件名,全路径长度能超过128字节),其表现为能读取文件路劲却为无法修改属性。其实大部分时候是不会遇到的。
  • 不过我发现有些PDF文件解析的时候只能解析一部分内容出来,大段的文字没有解析出来,请问是什么问题,有什么解决方案吗?查了好久没找到类似的问题,感谢大家! 下面是我的代码: # -*- coding: utf-8 -*- ...
  • C语言文件操作

    2019-07-05 20:46:17
    文件包括文件内容和文件属性。 程序文件 包括源程序文件(后缀为.c),目标文件windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。 数据文件 文件的内容一定是程序,而是程序运行时读写的数据...

    什么是文件?

    狭义来讲,磁盘上的文件就是文件。文件包括文件内容和文件属性。
    程序文件

    包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。

    数据文件

    文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

    文件名

    一个文件要有一个唯一的文件标识,以便客户识别和引用。
    文件名包含三部分:文件路径 + 文件名主干 + 文件后缀
    例如:c:\code\test.txt
    “ c: ”为盘符,“ \ ”为目录分隔符
    为了方便起见,文件标识常被称为文件名

    文件类型

    根据数据的组织形式,数据文件被称为文本文件或者二进制文件
    数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
    如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件

    一个数据在内存中是怎样存储的呢?
    字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。
    例如整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用五个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节。
    在这里插入图片描述
    测试代码:

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	int a = 10000;
    	//以wb(写入)形式打开名为“test.txt”的文件
    	FILE* pf = fopen("test.txt", "wb");  
    	fwrite(&a, 4, 1, pf);  //往文件里写入
    	fclose(pf);    //关闭文件
    	pf = NULL;
    	system("pause");
    	return 0;
    }
    

    程序运行结束后,我们来看一看文件到底有没有这个文件。
    1.右击项目,点击"在文件资源管理器中打开文件夹"。
    在这里插入图片描述
    2.进入当前目录,找到了test.txt文件。在这里插入图片描述
    3.点击源文件 —> 添加 —> 现有项 —> test.txt
    4.test.txt —> 打开方式 —> 二进制编辑器
    打开后我们可以看到10000是以16禁止显示,二进制存储在外存中的。在这里插入图片描述

    文件缓冲区

    ANSIC标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动的在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。
    从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定。
    在这里插入图片描述
    数据的缓冲方式:
    (1)无缓冲:直接写入磁盘。
    (2)行缓冲:先送入缓冲区,遇到换行符时,将换行符及换行符之前的内容全部写入磁盘,缓冲区的内容刷新。
    (3)全缓冲:把缓冲区写满后刷新。(效率最高)
    将内存中的数据送到外设其实是一个很麻烦很慢的过程,要想效率最高就是一次性送很多数据。

    文件指针

    缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。操作文件时,必须要有文件指针。
    每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有类型声明的,取名FILE

    (1)一个程序启动时,FILE*会打开一个流,为文件指针(句柄)。
    (2)任何一个程序启动时,会默认打开三个流。分别为标准输入、标准输出、标准错误。分别对应stdin,stdout,stderr.这三个流对应的设备分别为键盘、显示器、显示器。

    FILE* pf;
    

    定义pf是一个指向FILE类型数据的指针变量。可以是pf指向某个文件的文件信息区(一个结构体变量)。通过该文件信息区中的消息就能访问该文件。也就是说,通过文件指针变量就能够找到与它关联的文件。

    文件的打开和关闭

    文件在读写之前应该先打开文件,在试用结束之后应该关闭文件。
    在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
    ANSIC规定使用fopen函数来打开文件,fclose来关闭文件。

    FILE * fopen(const char * filename,const char *mode);
    int fclose(FILE * stream);
    

    打开方式如下:

    文本文件:r(只读) w(只写) a(追加)
    二进制文件: rb(只读) wb(只写) ab(追加)
    r+(读写) w+(读写) a+(读写)
    rb+(读写) wb+(读写) ab+(读写)

    实例代码:

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	FILE * pFile;
    	pFile = fopen("myfile.txt", "w");
    	if (pFile != NULL){
    		fputs("fopen example", pFile);
    		fclose(pFile);
    	}
    	system("pause");
    	return 0;
    }
    

    文件的顺序读写

    功能 函数名
    字符输入函数 fgetc
    字符输出函数 fputc
    文本行输入函数 fgets
    文本行输出函数 fputs
    格式化输入函数 fscanf
    格式化输出函数 fprintf
    二进制输入 fread
    二进制输出 fwrite

    文件的随机读写

    1.fseek

    根据文件指针的位置和偏移量来定位文件指针。

    int fseek(FILE * stream, long int offset, int origin)
    

    FILE * stream:文件指针
    long int offset:偏移量,往前+,往后-
    int origin:初始位置 (1)SEEK_SET(文件开头)(2)SEEK_CUR(文件指针当前位置)(3)SEEK_END(文件结尾,此时偏移量为-)
    只可改变文件的属性,即当前读写位置,没有权利读写。
    例:

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	FILE * pFile;
    	pFile = fopen("example.txt", "wb");
    	fputs("This is an apple.", pFile);
    	fseek(pFile, 9, SEEK_SET);
    	fputs(" sam", pFile);
    	fclose(pFile);
    	system("pause");
    	return 0;
    }
    

    结果:
    在这里插入图片描述

    2.ftell

    返回文件指针相对于起始位置的偏移量

    long int ftell(FILE * stream);
    

    下面的代码主要是先通过fseek将文件指针放在文件最后的字符上,然后用ftell得出文件的偏移量,即文件内容所占比特位的大小。

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	FILE * pFile;
    	long size;
    
    	pFile = fopen("mylife.txt", "rb");
    	if (pFile == NULL){
    		perror("Error opening file");
    	}
    	else{
    		fseek(pFile, 0, SEEK_END);
    		size = ftell(pFile);
    		fclose(pFile);
    		printf("size of mylife.txt:%ld bytes.\n", size);
    	}
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述
    3.rewind

    让文件指针的位置回到文件的起始位置

    void rewind(FILE * stream)
    

    例子:

    #include<stdio.h>
    #include<stdlib.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	int n;
    	FILE * pFile;
    	char buffer[27];
    
    	pFile = fopen("myfile.txt", "w+");
    	for (n = 'A'; n <= 'Z'; n++){
    		fputc(n, pFile);
    	}
    	rewind(pFile);
    	fread(buffer, 1, 26, pFile);
    	fclose(pFile);
    	buffer[26] = '\0';
    	puts(buffer);
    	system("pause");
    	return 0;
    
    }
    
    

    在这里插入图片描述

    展开全文
  • 在使用电脑时,文件属性下有“文件大小”和“占用空间”这两个内容,它们有什么异同。 --------------------------------------------------------------------------------  在Windows系统中,一个文件的大小...
  • -mkexif创建新的最小exif信息(覆盖原有的的exif信息),明白这有什么用 -di删除IPTC(Photoshop格式兼容)信息 -dx删除XMP(photoshop文件信息) -te从其他jpg文件导入exif信息到当前文件 -dc删除jpg信息中的备注 -ce...
  • C语言-文件操作

    2019-06-09 11:18:17
    一.文件 文件=文件内容+文件属性(创建...包括源程序文件(后缀为.c),目标文件windows环境后缀为.obj),可执行程序(windows环境后缀 为.exe)。 *数据文件文件的内容一定是程序,而是程序运行时读写的数...

    一.文件

    文件=文件内容+文件属性(创建时间,大小,创建者,权限)

    1.什么是文件

    -------磁盘上的文件是文件。
    -------但是在程序设计中,我们一般谈的文件有两种:程序文件,数据文件。

    *程序文件:
    包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀 为.exe)。

    *数据文件:
    文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出 内容的文件。

    2.文件名
    一个文件要有一个唯一的文件标识,文件后缀以便用户识别和引用。

    文件名包含3部分:文件路径+文件名主干+文件后缀
    例如: c:\code\test.txt

    注意:windows当中文件类别是用文件后缀区别的

    3.文件类型
    根据数据的组织形式,数据文件被称为文本文件或者二进制文件。

    二进制文件:
    数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件
    文本文件:
    如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。

    4.文件缓冲区

    ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正 在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到 磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓 冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定的

    5.文件指针

    缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。

    每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态 及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.

    例如,VS2008编译环境提供的 stdio.h 头文件中有以下的文件类型申明:

    struct _iobuf {     
     		  char *_ptr;     
           	 	  int   _cnt;   
            	  char *_base;  
    		  int   _flag;       
                  	  int   _file;      
                	  int   _charbuf;   
              	  int   _bufsiz;    
                      char *_tmpfname;      
      }; 
      typedef struct _iobuf FILE;
    
    

    不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

    每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必 关心细节。

    一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。 下面我们可以创建一个FILE*的指针变量:

    FILE* pf;	//文件指针变量 
    

    注意:通过文件指针变量可以找到与它相关联的文件。

    6.文件使用方式

    文件使用方式 			含义 				如果指定文件不存在
    “r”(只读) 	为了输入数据,打开一个已经存在的文本文件		        出错
    “w”(只写)	 为了输出数据,打开一个文本文件 			建立一个新的文件
    “a”(追加)		 向文本文件尾添加数据 				出错
    “rb”(只读) 	为了输入数据,打开一个二进制文件 				出错
    “wb”(只写) 	为了输出数据,打开一个二进制文件 			建立一个新的文件
    “ab”(追加)	 向一个二进制文件尾添加数据				出错
    “r+”(读写)	 为了读和写,打开一个文本文件			        出错
    “w+”(读写)	 为了读和写,建议一个新的文件 			 建立一个新的文件
    “a+”(读写)	 打开一个文件,在文件尾进行读写			 建立一个新的文件
    “rb+”(读写)	 为了读和写打开一个二进制文件 				 出错
    “wb+”(读写)	 为了读和写,新建一个新的二进制文件		        建立一个新的文件
    “ab+”(读写)	 打开一个二进制文件,在文件尾进行读和写 		建立一个新的文件
    
    

    7.文件的顺序读写函数

    功能			 函数名 				适用于
    字符输入函数	        fgetc				所有输入流
    字符输出函数	        fputc				所有输出流
    文本行输入函数 		fgets 				所有输入流
    文本行输出函数 		fputs				所有输出流
    格式化输入函数 		fscanf 				所有输入流
    格式化输出函数 		fprintf 			所有输出流
    二进制输入 		fread				 文件
    二进制输出 		fwrite				 文件
    

    二.文件操作相关函数

    1.文件的打开与关闭

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    int main()
    {
     	FILE *fp = fopen("60_log.txt", "w+");   //文件名:60_log.txt   打开方式:读写
    	 if (NULL == fp)   //打开失败
    	 {
    	  printf("%s:%d\n",strerror(errno), errno);  //错误原因,错误号
    	 }
    	 fclose(fp);  //关闭文件
    	 system("pause");
     	return 0;
    }
    

    2.fgetc

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int fgetc(FILE *stream);
    //从一个文件流读一个字符
    //fgetc有可能获取字符失败,返回值为Int可以表示失败情况
    //若返回值为char,则放入的都被认为是char型数据,无法表示失败情况
    
    int main()
    {
    	 FILE *fp = fopen("60_log.txt", "w");  //只写方式
    	 if (NULL == fp)    //打开失败
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
     	int i = 0;
     	for (; i < 26; i++)
    	 {
    	  fputc('a' + i, fp);
     	 fputc(' ', fp);      //写入文件a-z字母
    	 }
    	 fclose(fp);
    	 fp = fopen("60_log.txt", "r");  //只读方式
    	 if (NULL == fp)    //打开失败
    	 {
     	 printf("%s:%d\n", strerror(errno), errno);
    	 }
    	i = 0;
    	 int c;
    	 for (; i < 26; i++)
    	 {
     	 c = fgetc(fp);
    	  printf("%c", c);
    	  c = fgetc(fp);
     	 printf("%c",c);
    	 }
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    } 
    

    3.putchar

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    
    //int putchar(int c);
    //写一个字符到标准输出stdout
    
    //第一种
    //int main()
    //{
    // 	putchar('x');   //写一个字符到标准输出stdout
    // 	system("pause");
    //	 return 0;                //x
    //}
    
    //第二种
    int main()
    {
    	 putchar('x');
    	 fputc('x', stdout);
    	 system("pause");         //xx
    	 return 0;
    }
    
    //fgetc/fputc/fgets/fputs--->getchar/putchar/gets/puts
    //后面的这些接口不用传stdout,底层已经实现
    
    //同理:printf函数的底层肯定有一个参数也传入了stdout,表示它是往显示器上边打
    
    

    4.fputc

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int fputc( int c, FILE *stream );
    //写一个字符到文件流
    
    //第一种
    #if 0
    int main()
    {
    	 int i = 0;
    	 for (; i < 26; i++)
    	 {
      	fputc('a' + i, stdout);  //往显示器打
    	  fputc(' ', stdout);
     	}
     	system("pause");     //a b c d e .....x y z
     	return 0;
    }
    #endif
    
    
    //第二种
    int main()
    {
    	 FILE *fp = fopen("60_log.txt", "w");   //只写方式
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 int i = 0;
    	 for (; i < 26; i++)
    	 {
    	  fputc('a' + i, fp);
    	  fputc(' ', fp);
     	}
    	 fclose(fp);                  //a b c d e .....x y z
    	 system("pause");
    	 return 0;
    }
    

    5.fputs

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int fputs( const char *string, FILE *stream );
    //写一个字符串到文件流
    
    //第一种
    #if 0
    int main()
    {
    	 char *msg = "hello";
    	 fputs(msg, stdout);   //往显示器打(C程序会默认打开一个流:stdin,stdout,stderror
    	 system("pause");      //hello
    	 return 0;
    }
    #endif
    
    //第二种
    #if 0
    int main()
    {
    	 char *msg = "hello!%d,%c,%f";
    	 fputs(msg, stdout);      //纯正的IO输出
    	 system("pause");         //hello!%d,%c,%f
    	 return 0;
    }
    #endif
    
    //第三种
    int main()
    {
     	char *msg = "hello!%d,%c,%f\n";
    	 FILE *fp = fopen("60_log.txt", "w+");  //读写方式
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 int i = 0; 
    	 while (i < 10)    //在文件中打印10遍hello!%d,%c,%f
    	 {
    	  fputs(msg, fp);
    	  i++;
    	 }
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    6.fgets

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //char *fgets( char *string, int n, FILE *stream );
    //从文件流得到一个字符串
    //缓冲区存放得到的字符串,读的个数,文件流
    
    int main()
    {
     	char *msg = "hello world!%d,%c,%f\n";
     	FILE *fp = fopen("60_log.txt", "w+");  //读写方式
    	 fputs(msg, fp);    //把字符串写到文件中
    	 fclose(fp);
    	 fp = fopen("60_log.txt", "r");  //只读方式
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 int i = 0;
    	 char buf[32];  //缓冲区
    	 while (i < 10)    //读10遍
    	 {
      	fgets(buf, 32, fp);  //把文件fp的内容读到buf中
     	 i++;
     	 fputs(buf, stdout);  //把buf中的内容从显示器打印出来
    	 }
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    7.fseek

    
    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int fseek( FILE *stream, long offset, int origin );
    //文件,偏移量,起始位置
    //把文件指正移到一个特殊的位置
    //根据文件指针的位置和偏移量来定位文件指针
    
    int main()
    {
    	 char *msg = "hello world!%d,%c,%f\n";
    	 FILE *fp = fopen("60_log.txt", "w+");  //读写方式
    	 fputs(msg, fp);    //把字符串写到文件中
    	 fclose(fp);
    	 fp = fopen("60_log.txt", "r");  //只读方式
    	 if (NULL == fp)
    	 {
    		  printf("%s:%d\n", strerror(errno), errno);
     	}
    	 int i = 0;
    	 char buf[32];  //缓冲区
    	 while (i < 10)    //读10遍
    	 {
    	  fgets(buf, 32, fp);  //把文件fp的内容读到buf中
    	  i++;
    	  fputs(buf, stdout);  //把buf中的内容从显示器打印出来
    	 }
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    
    

    8.puts

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    
    //int puts( const char *string );
    //写一个字符串到显示器
    
    int main()
    {
    	 puts("hello");   //网显示器上打
    	 system("pause");    //hello
    	 return 0;
    }
    

    9.fprintf

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int fprintf( FILE *stream, const char *format [, argument ]...);
    //打印格式化的数据到文件流
    
    int main()
    {
     	FILE *fp = fopen("60_log.txt", "w+");  //读写方式
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
     	int i = 10;
    	 char c = 'a';
    	 float d = 3.14;
     	printf("%d,%c,%f\n", i, c, d);
     	fprintf(fp,"%d,%c,%f\n", i, c, d);
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    10.fscanf

    
    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int fscanf( FILE *stream, const char *format [, argument ]... );
    //读格式化的数据到文件流
    
    int main()
    {
     	FILE *fp = fopen("60_log.txt", "w+");  //读写方式
    	 int i = 10;
    	 char c = 'a';
    	 float d = 3.14;
    	 fprintf(fp, "%d,%c,%f\n", i, c, d);  //往文件中写数据
    	 fclose(fp);
    	 fp = fopen("60_log.txt", "r");  //只读
    	 if (NULL == fp)
     	{
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    
    	//scanf("%d %c %f", &i, &c, &d);     //从标准输入读取
    	 //printf("%d,%c,%f", i, c, d);
    
    	fscanf(fp,"%d,%c,%f", &i, &c, &d);     //从文件中读
    	 printf("%d,%c,%f\n", i, c, d);
     	fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    11.ftell

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //long ftell( FILE *stream );
    //得到文件指针的当前位置
    
    int main()
    {
     	FILE *fp = fopen("60_log.txt", "r");  //只读方式
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 int i = 'a';
    	 for (; i <='z'; i++)                            //ftell:0
    	 {            //ftell:1
     	 printf("ftell:%d\n", ftell(fp));   //ftell:2
     	 putc(i, fp);        //.......
    	 }            //ftell:25
     	fseek(fp, -10, SEEK_END);      
     	printf("ftell:%d\n", ftell(fp));    //ftell:16
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    12.rewind

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //void rewind( FILE *stream );
    //让文件指针回到文件的起始位置
    
    int main()
    {
    	 FILE *fp = fopen("60_log.txt", "r");  //只读方式
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 int i = 'a';
    	 for (; i <= 'z'; i++)                           //ftell:0
     	{            //ftell:1
     	 printf("ftell:%d\n", ftell(fp));   //ftell:2
    	  putc(i, fp);        //.......
    	 }            //ftell:25
    	 fseek(fp, -10, SEEK_END);
     	printf("ftell:%d\n", ftell(fp));    //ftell:16
     	rewind(fp);
    	 printf("ftell:%d\n", ftell(fp));    //ftell:0
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    
    

    13.feof

    --------文本文件
    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int feof( FILE *stream );
    //测试文件是否被读到了结尾
    
    int main()
    {
    	 FILE *fp = fopen("60_log.txt", "w");   //只写方式
    	 if (NULL == fp)
    	 {
      	printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 int i = 0;
    	 for (; i < 26; i++)
    	 {
    	  fputc('a' + i, fp);
    	 }
    	 fclose(fp);                  //abcde .....xyz
    	 fp = fopen("60_log.txt", "r");   //只读方式
    	 int c;
    	 while ((c = fgetc(fp) )!= EOF)    //fgetc的返回值为int
    	 {
    	  printf("%c\n", c);
    	 }
    	 if (feof(fp))
    	 {
    	  printf("read file end!\n");
    	 }
    	 else if (ferror(fp))
    	 {
    	  printf("fgetc error!\n");
    	 }
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    
    
    --------二进制文件
    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    int main()
    {
    	 FILE *fp = fopen("60_log.txt", "wb");   //二进制方式写
    	 int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    	 fwrite(a, sizeof(*a), 10, fp);   //把a数组的内容写到文件中
    	 fclose(fp);
    	 fp = fopen("60_log.txt", "rb");   //二进制方式读
    	 int x;   //缓冲区x
    	 while (fread(&x, sizeof(int), 1, fp) >= 1)
    	 {
    	  printf("%d\n", x);
    	 }
    	 if (feof(fp))
    	 {
    	  printf("read end a file!\n");
    	 }
    	 else if (ferror(fp))
    	 {
     	 printf("error reading!\n");
    	 }
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    14.sprintf

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<string.h>
    
    //int sprintf( char *buffer, const char *format [, argument] ... );
    //按格式输出到对应缓冲区
    
    int main()
    {
    	 FILE *fp = fopen("60_log.txt", "w+");  //读写方式
    	 int i = 10;
    	 char c = 'a';
     	float d = 3.14;
    	 fprintf(fp, "%d,%c,%f\n", i, c, d);  //往文件中写数据
     	fclose(fp);
    	 fp = fopen("60_log.txt", "r");  //二进制读
    	 if (NULL == fp)
    	 {
    	  printf("%s:%d\n", strerror(errno), errno);
    	 }
    	 fscanf(fp, "%d,%c,%f", &i, &c, &d);
    	 printf("%d,%c,%f\n", i, c, d);  
    
    	//int:1,char:a,double:3.140000
    	 //把i,c,d格式化输出为此种形式放到buf中
    	 char buf[64];
    	 sprintf(buf, "int:%d,char:%c,double:%f", i, c, d);
    	 printf("%s\n", buf);
    	 fclose(fp);
    	 system("pause");
    	 return 0;
    }
    

    15.sscanf

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    
    //int sscanf( const char *buffer, const char *format [, argument ] ... );
    //把字符串中的内容按格式输出出来
    
    int main()
    {
    	 char *msg = "a:10,b:20";
    	 int a, b;
    	 sscanf(msg, "a:%d,b:%d", &a, &b);    //把10和20从字符串提取出来
    	 printf("%d,%d\n", a, b);
    	 system("pause");
    		 return 0;
    }
    
    展开全文
  • 显示非本地文件类型(例如 MKV 和 FLV)的资源管理器属性 经常更新–内置更新通知 支持在扩展器和 Xbox One 上播放 MKV 文件。 允许将 PowerDVD 解码器用于 Media Center 中的32位LiveTV。 支持将 LAV 过滤器与 MKV ...
  • Windows 脚本文件 (.wsf) WSH 拖放支持 设置和自定义脚本属性 (.wsh) 在命令提示符下运行脚本 从 Windows 运行脚本 WScript.exe 和 CScript.exe 选项 运行脚本需要包括的内容 <br> 设置...
  • 程序文件包括源文件(.c),目标文件(windows环境是.obj),可执行文件windows环境是.exe) 数据文件 :是程序运行时读写的数据,比如程序运行时需要从中读取数据的文件,或者输出内容的文件文件包含文件的...

    一、什么是文件,文件包含什么,文件类型有什么???

    答:文件:存储在磁盘上的文件是文件。C语言中我们谈的文件有两种**:程序文件和数据文件。**
    程序文件 :包括源文件(.c),目标文件(windows环境是.obj),可执行文件(windows环境是.exe)
    数据文件 :是程序运行时读写的数据,比如程序运行时需要从中读取数据的文件,或者输出内容的文件。
    文件包含文件的内容和文件的属性。
    C语言中的数据文件有二进制文件文本文件
    二进制文件:数据存储时以二进制的形式存储,不加转换的输出到内存,就是二进制文件。
    文本文件:如果要求在内存上以ASCII码存储,则需要在存储前转换。以ASCII字符的形式存储的文件时文本文件。

    二、基本函数的使用

    (1)、fopen函数
    文件打开函数。
    FILE*fopen(const char *filename,const char mode);
    函数返回值是FILE
    型(文件指针)
    filename是要打开的文件名
    mode是打开方式
    打开方式有
    r (只读,为了输入数据,打开一个已经存在的文本文件)、
    w(只写,为了输出数据,打开一个文本文件)、
    a(追加,向文件尾添加数据)、
    rb(只读,打开一个已经存在的二进制文件),
    wb(只写,为了输出数据,打开一个二进制文件),
    r+(读写,打开一个文本文件)、
    w+(读写,建议一个新的文件)
    a+((读写,打开一个文件,在文件末尾添加数据);
    rb+(为了读写,打开一个二进制文件)
    wb+为了读写,新建一个新的二进制文件。
    ab+打开一个二进制文件,文件尾进行读写。
    举个例子:

    #include<stdio.h>
    #include<stdio.h>
    #pragma warning(disable:4996)
    int main()
    {
    	FILE* fp;
    	fp = fopen("myfile.txt", "w");//如果没有这个文件,新建在源文件目录下。
    	//也可以通过文件路径打开
    	//文件打开,关闭,返回值都是FILE*型
    	if (fp == NULL)
    	{
    		printf("open error");
    		return 1;
    	}
    	else 
    	{
    		fputs("fopen example", fp);//将fopen输入到文件myfile.txt中
    	}
    	fclose(fp);//关闭函数
    	return 0;
    }
    

    在这里插入图片描述
    打开这个文件:右键源文件,添加,现有项,就会看到文件,添加在源文件目录下,右键,打开方式,最下边是二进制文件打开,最上边是文本文件打开。
    如果你在以w形式打开一次文件,里边的东西会消失。
    如果以r和方式打开,不会消失。

    int main()
    {
    	FILE* fp;
    	fp = fopen("myfile.txt", "w");
    	if (fp == NULL)
    	{
    		printf("open error");
    		return 1;
    	}
    	else//打开成功之后,之前写的fopen example 消失了。
    	{
    		fputs("hello wolrd", fp);//写入新的字符。
    	}
    	fclose(fp);
    	fp=fopen("myfile.txt", "r");
    	if (fp == NULL)
    	{
    		printf("open error");
    		return 1;
    	}//如果打开成功,hello world还在。
    	fclose(fp);
    	fp = fopen("myfile.txt", "a");
    	if (fp == NULL)
    	{
    		printf("open error");
    		return 1;
    	}
    	else
    	{
    		fputs("123a45", fp);//在文件末尾在添加字符
    	}
    	fclose(fp);
    
    	return 0;
    

    结果如下:在这里插入图片描述

    (2)、fseek函数
    跟据文件指针的位置和偏移量来定位文件指针。
    int fseek (FILE* stream,long int offset ,int origin)
    stream :想对那个文件修改,offset :偏移量,origin :选择基准,有SEEK_SET(从起始位置开始)、SEEK_END(从文件末尾开始)、SEEK_CUR(文件指针指向的当前位置)
    举个例子:

    int main()
    {
    	FILE* fp;
    	fp = fopen("myfile.txt", "wb");
    	if(fp==NULL{
    		perror("Error opening file.");
    	}
    	else
    	{
    		fputs("This is an apple .",fp);
    		fseek(fp, 9, SEEK_SET);//从起始位置,数9个开始修改
    		fputs("sam", fp);//用sam替换了三个。
    	}
    	fclose(fp);
    	return 0;
    }
    

    在这里插入图片描述

    (3)、ftell函数
    ftell函数返回文件相对于起始位置的偏移量;
    long int ftell(FILE * stream);
    举个例子:

    int main()
    {
    	long size=0;
    	FILE* fp;
    	fp = fopen("myfile.txt", "r");//内容是 This is asampple.
    	if (fp == NULL)
    	{
    		perror("Error opening file");//打印错误信息。
    	}
    	else
    	{
    		fseek(fp, 0, SEEK_END);//让fp指向文件尾,偏移量就是整个文件的大小。
    		size = ftell(fp);
    		printf("size of myfile.txt :%ld bytes.\n", size);
    	}
    	return 0;
    }//可以计算文件的大小
    

    在这里插入图片描述
    (4)、rewind 函数
    让文件指针的位置回到文件的起始位置。
    void rewind(FILE*stream)
    和fseek 的fseek(fp,0,SEEK_SET),相似。
    举个例子:

    int main()
    {
    	int n = 0;
    	FILE* fp;
    	char buffer[27];
    	fp = fopen("myfile.txt", "w+");//原始内容被清除
    	if (fp == NULL)
    	{
    		perror("Error opening file");
    	}
    	else
    	{
    		for (n = 'A'; n <= 'Z'; n++)
    		{
    			fputc(n, fp);//写完之后文件指针在文件末尾
    		}
    		rewind(fp);//文件指针在文件初始位置
    		fread(buffer, 1, 26, fp);
    		//从fp文件中读取26的大小为1字节的数据,放到buffer中
    	}
    	fclose(fp);
    	buffer[26] = '\0';
    	puts(buffer);//buffer打印在显示器上
    	return 0;
    }
    

    在这里插入图片描述
    (5)fread函数
    size_t fread(void ptr,size_t size ,size_t count,FILEfp)
    将fp中的count个大小为size的数据读入ptr中。
    (6)fwrite函数
    size_t fwrite(void ptr,size_t size ,size_t count,FILEfp)
    将ptr 内容写在fp中,size 一个的大小,count 多少个。
    这两个函数在其他函数例子中会使用到,就不举例子了。
    (7)feof函数
    用feof判断文件读取结束。
    文本文件判断结尾的时候不能直接使用feof函数的返回值直接判断,要文本文件一直读取,直到读取出错,在用feof判断。
    文本文件读取是否结束后,判断返回值EOF(fgetc),NULL(fgets);
    文件读取结束有两种可能,1 读取出错,2读取结束,所以不能直接使用feof,
    举例子:

    #include<stdio.h>
    #include<stdio.h>
    #pragma warning(disable:4996)
    int main()
    {
    	char buffer[100];
    	int c;
    	FILE* fp = fopen("myfile.txt", "r");
    	if (fp == NULL)
    	{
    		printf("open error");
    		return 1;
    	}
    	else
    	{
    		if (fgets(buffer,100,fp) != NULL)
    		{
    			puts(buffer);
    		}
    		/*while ((c = fgetc(fp)) != EOF)
    		{
    			putchar(c);
    		}*/
    		if (feof(fp))
    		{
    			puts("End of file reached successfully");
    		}
    	}
    	return 0;
    }
    

    判断二进制文件读取是否结束
    fread 判断返回值是否小于实际要读的个数。
    例子:

    #include<stdio.h>
    #include<stdio.h>
    #pragma warning(disable:4996)
    enum {SIZE =8};
    int main()
    {
    	double a[SIZE] = { 1.0 ,2.0, 3.0, 4.0, 5.0 ,6.0,7.0,8.0};
    	double b=0.0;
    	size_t ret = 0;
    	FILE* fp = fopen("hehe.bin", "wb");
    	if (fp == NULL)
    	{
    		return 1;
    	}
    	else
    	{
    		fwrite(a, sizeof(double), SIZE, fp);
    	}
    	fclose(fp);
    	fp = fopen("hehe.bin", "rb");
    	while ((ret = fread(&b, sizeof(double), 1, fp)) >= 1)
    	{
    		printf("%lf", b);
    	}
    	if (feof(fp))
    	{
    		printf("Error reading :unexpected end of file\n");
    	}
    	fclose(fp);
    	return 0;
    }
    
    展开全文
  • <code>Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>java 用法: java [-options] class [args...] ...问问各位高手什么地方锁了</p>
  • VB控件属性使用大全

    2011-12-15 12:02:34
    控件具有很多相同的属性,如标识控件名称的Name属性、标识控件标题的Caption属性、有效属性Enable、可见属性Visible、标识控件位置和大小的Top、Left、Width、Height、属性、定义背景色的BackColor属性、定义前景色...
  •  (3)用户如果对系统提供的声音文件不满意,可以单击“浏览”按钮,弹 出浏览声音对话框。在该对话框中选定声音文件,并单击“确定”按钮,回 到“声音”选项卡。  (4)在Windows XP中,系统预置了多种声音方案...
  • 简明批处理教程22009年10月20日 星期二 下午 05:35 最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕容易看懂和理解这些批处理文件,也就更谈上自己动手编写了,古...
  • windows实用dos命令大全

    2010-12-10 21:27:35
    4.使用说明:该命令可以一步就将目录及其下的所有文件、子目录、更下层的子目录一并删除,而且不管文件属性为隐藏、系统或只读,只要该文件位于删除的目录之下,DELTREE都一视同仁,照删误。使用时务必小心!!...
  • 属性”屏幕显示字体详细信息,包括文件名,文件大小,版本和版权。 除了打印(这更像是当今所有字体查看器中的常用功能)外,NexusFont 还允许您将字体导出为图像,并支持 GIF,PNG,JPG,BMP,EMF 和 WMF。 ...
  • Xplorer2 包含了 Windows Explorer 应该有的很多功能。...AVI,MPEG,MOV,WMV,WMA等文件(某些文件需要相应插件支持)改变文件属性,强大的运行命令以及快速 DOS 窗口,强大的文件选择过滤功能,书签,以及搜索文本功能!
  • 1、PhpSpreadsheet 是什么 ...phpexcel 由于版本陈旧性能低下 官方...PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpS

    1、PhpSpreadsheet 是什么
    PhpSpreadsheet由来:
    phpexcel 由于版本陈旧性能低下 官方放弃维护
    转而开发PhpSpreadsheet 用了最新得psr标准因而 对php版本不向下兼容 需要注意!。

    PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式
    PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到

    使用 PhpSpreadsheet 开发的PHP要求 7.1或更高版本
    PhpSpreadsheet 支持链式操作

    2、PhpSpreadsheet 支持的文件格式

    3 XAMPP

     XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了。它可以在Windows、Linux、Solaris、Mac OS X 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等。

    xampp 可以在https://www.apachefriends.org/zh_cn/download.html下载,我使用最新64位的8.05

    xampp-portable-windows-x64-8.0.5-0-VS16.zip

    下载xampp后解压到硬盘根目录,例如 F:\xampp

    4,下载composer

    Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。

    安装Composer以及使用Packagist中国全量镜像(全局安装/全局配置)
    进入Composer官网下载页面 https://getcomposer.org/download/,在页面最下方Manual Download区域选择需要的版本下载。

    将下载的composer.phar复制到F:\xampp\php\pear目录下面(重点)。

    在 目录下新建一个composer.bat文件,并将下列代码保存到此文件中。
    ..\php "%~dp0composer.phar" %*

    打开一个命令行窗口,到F:\xampp\php\pear目录下试一试执行composer --version看看是否正确输出版本号。

    5,安装 PhpSpreadsheet

    打开一个命令行窗口,到F:\xampp\php\pear目录下执行

    composer require phpoffice/phpspreadsheet

    会显示下载流程,

    完成后输入 composer info 显示已经安装的包

     

    6,测试

    从F:\xampp目录中运行xampp_start.exe启动xampp

    在F:\xampp\htdocs\目录下,新建一个2.php文件,输入以下代码段,

    <?php
    
    require 'vendor/autoload.php';
    
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');
    
    $writer = new Xlsx($spreadsheet);
    $writer->save('hello world.xlsx');

    在浏览器中输入http://127.0.0.1/2.php

    发现F:\xampp\htdocs\目录下生成了一个hello world.xlsx文件,测试成功

    展开全文
  • 主要包括:设计和确保DNS服务、计划互操作性、DNS系统与DNS系统的集 成、安装和使用DHCP和WINS服务以及Windows 2000活动目录等。本书是 Windows用户、系统管理员和网络设计师必读的关于域名系统的参考书 。UNIX...
  • windows编程资料大全

    2008-10-26 13:55:44
    可惜的是这个函数只能在Windows 2000中使用,Windows 9x 或Windows NT4.0提供此API函数。那么,如何在Windows 9x 或Windows NT4.0中实现GetLastInputInfo()的功能呢?笔者的方法是利用系统钩子对键盘、鼠标进行...
  • 12.1 Windows文件系统格式 690 CDFS 690 UDF 691 FAT12、FAT16和FAT32 691 NTFS 694 12.2 文件系统驱动程序总体结构 694 本地FSD 695 远程FSD 696 文件系统操作 700 文件系统过滤型驱动程序 705 12.3 诊断文件系统的...
  • 一般目标文件将这些信息按不同的属性,以”节”(Section)的形式存储,有时候也叫”段”(Segment),在一般情况下,它们都表示一个一定长度的区域,基本上加以区别,唯一的区别是在链接视图和装
  • 12.1 Windows文件系统格式 690 CDFS 690 UDF 691 FAT12、FAT16和FAT32 691 NTFS 694 12.2 文件系统驱动程序总体结构 694 本地FSD 695 远程FSD 696 文件系统操作 700 文件系统过滤型驱动程序 705 12.3 诊断文件系统的...
  • 全书共分5篇25章,内容包括开发windows ce的bootloader、oal、显示设备驱动程序、串口驱动程序和pc卡总线接口驱动程序,通过解析和研读微软的deviceemulator开发板的bsp的源代码,旨在帮助读者系统、全面、具体地...
  • 说 明: 〖[说明属性]转入转出工具源码〗说明文件<BR><BR>[说明属性]转入转出工具,安装之前必须保证你已经安装了OFFICE97中的ACCESS97,否则无法运行,此工具主要是用来对ACCESS里面所有表、查询、窗体、报表、模块...
  • 本版书没有这样做,而只是包括了“相关”的源代码文件,其他的都放在CD-ROM中,为什么?因为印刷这些代码会使本书增加一倍的厚度而没有相应增加内涵。其中一些代码是由Visual C++6.0的MFC向导产生的,甚至没有被编译...
  • 但是,我无法找到任何有关WSH的文件,并与Windows 98附带的帮助文件不包括脚本编程。 Windows Script Host的参考,基本上只是一张白纸,我咨询过的书籍和网站处理HTML脚本只使用VBScript和JScript。于是我开始调查...
  • Windows CE工程实践完全解析(pdf)

    热门讨论 2011-11-12 18:59:56
    全书共分5篇25章,内容包括开发windows ce的bootloader、oal、显示设备驱动程序、串口驱动程序和pc卡总线接口驱动程序,通过解析和研读微软的deviceemulator开发板的bsp的源代码,旨在帮助读者系统、全面、具体地...
  • File 文件登记簿

    2009-08-23 09:07:51
     File文件登记簿是为了方便党政机关的日常文件登记管理工作而编制的,主要包括单位级别管理、单位管理、文种管理、用户管理、文件登记管理、文件附件管理、文件快速检索、阅办单打印等内容。  二、安装、运行、...
  •  并且你一定必须使用 Windows 资源管理器,TortoiseSVN 的右键菜单可以工作在其他文件管理器,以及文件/打开对话框等标准的 Windows 应用程序中。你必须牢记,TortoiseSVN 是有意作为 Windows 资源管理器的扩展...
  • 说 明: 〖[说明属性]转入转出工具源码〗说明文件<BR><BR>[说明属性]转入转出工具,安装之前必须保证你已经安装了OFFICE2000中的ACCESS97,否则无法运行,此工具主要是用来对ACCESS里面所有表、查询、窗体、报表、...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 238
精华内容 95
关键字:

windows文件不包括什么属性