C语言——文件的操作-shs文件怎么打开

C语言——文件的操作-shs文件怎么打开

文件的操作,可以理解为输出输入终端为文件,通常我们的输入输出都是显示屏,其实原理一样,都是先将数据写入到内存,然后在从内存写到终端(显示器或者文件)

文件操作的主要步骤

1、打开文件,得到将要操作的文件的指针

2、设置文件指针的位置,打开文件时,默认指向文件的开头,以追加方式打开文件时,指向文件的末尾

3、读写文件

4、关闭文件,切记不要忘了这一步,否则造成输入、输出的内容不能正常保存到文件,因为,计算机向文件中保存文件,是先将数据写到缓冲区,当缓冲区满了之后,再一起写入到文件,所以如果忘了,可能造成文件内容确实,也可以写文件写完后,刷新以下缓存,fflush()。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define SUCCESS 1

#define ERROR -65535

/*文件使用方式

1、r(只读),若使用该方式打开文件,则只能读取文件中的内容,另外打开的文件必须是已经存在的文件,若不存在,会提示错误。

2、w(只写),若使用该方式打开文件,则只能向文件中写数据,若打开的是一个已经存在的文件,会先删除原来文件的内容,用新的文件内容覆盖,若打开的文件不存在,会创建一个该名字的文件,并写入数据

3、a(追加),打开一个文件,将新的内容插入到原来内容的末端,若打开的文件不存在,会提示错误

4、b(二进制文件),通常和r,b,w结合起来使用,只是打开文件的文件是一个二进制的文件,默认的是文本文件

5、r+(读写),打开一个已经存在的文件,读或者写内容进去,注意该文件必须已经存在

6、w+(读写),新建一个文件,文件可以存在,也可以不存在,若存在,则先删除源原文件内容,再写入新的内容

7、a+(读写),打开一个存在的文件,新的内容插入到原来内容后面

*/

/*文件操作的步骤

1、打开文件,返回文件的指针fopen("filepath","mode")

2、操作文件,读写操作fread、fwrite、fgets、fputs、fgetc、fputc、fscanf、fprintf

3、关闭文件fclose(*fp)

*/

/*文件操作常用的函数

1、ch = fgetc(fp),从文件中读取一个字符,返回给ch,遇到文件结束符,返回EOF(-1)

2、fputc(ch,fp),向文件中写入一个字符,将字符ch写入到文件中,写成功,返回写入的字符;写失败,返回EOF(-1)

注意:打开文件的时候,文件指针指向开头的地方,读取一个或者写一个,指针向后移动,到达文件尾部,有一个文件结束符EOF

3、fread(buff,size,count,fp);从文件中读取内容,buff保存从文件中读取的内容,size是单个buff结构的大小,count表示一次要从文件中读取多少个这样的结构,fp表示文件指针,size决定了每次从文件中读取多少字节的内容

4、fwrite(buff,size,count,fp);向文件中写入内容,buff保存从文件中读取的内容,size是单个buff结构的大小,count表示一次要从文件中读取多少个这样的结构,fp表示文件指针,size决定了每次从文件中读取多少字节的内容

5、fprintf(fp,格式字符串,输出列表),格式化输出,和printf用法一样,只不过这个用于将内容格式化输出到磁盘文件上,而不是格式化输出到终端上

6、fscanf(fp,格式字符串,地址列表),格式化输出,和scanf用法一样,只不过这个用于从磁盘文件上读取数据保存在指定的地址上

文件的定位,文件指针的定位

7、rewind(fp):将文件指针指向文件的开头位置

8、fseek(fp,偏移量,文件指针起始位置),将文件指针按照起始位置作位置偏移,文件指针的起始位置可以有三种:起始位置(SEEK_SET 0)、当前位置(SEEK_CUR 1)、末尾位置(SEEK_END 2)

9、ftell(fp),返回文件指针当前的位置,相对于文件头位置的偏移量。通过这三个函数,组合可以返回文件的字节数,先将文件指针置于末端,然后返回文件指针的位置,即可得到文件的大小

*/

/*只写的方式打开一个不存在的文件,会提示错误*/

#if 0

int main()

{

FILE *pFile = NULL;

pFile = fopen("./file.txt","r");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

fclose(pFile);

return SUCCESS;

}

#endif

/*只读的方式打开一个不存在的文件,若文件不存在,会创建一个新文件*/

#if 0

int main()

{

FILE *pFile = NULL;

pFile = fopen("./file.txt","w");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个文件,若文件不存在,会创建一个新文件,向文件中写入一个字符串*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[255] = {"hello,this is ducument operation!\r\n"};

int len = strlen(buff);

int i = 0;

pFile = fopen("./file.txt","w");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

/*逐个字符的往文件中写入*/

for(i = 0;i < len;i++)

{

fputc(buff[i],pFile);

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,读取文件中的一个字符*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[100];

int i = 0;

char ch;

pFile = fopen("./file.txt","r");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

while((ch = fgetc(pFile)) != EOF)

{

buff[i] = ch;

++ i;

if(i >= 99)

{

break;

}

}

buff[i] = '\0';

printf("C语言——文件的操作-shs文件怎么打开",buff);

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,向文件中写入内容*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[255] = {"hello,this is ducument operation!\r\n"};

pFile = fopen("file.txt","w");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

if(fwrite(buff,10,3,pFile) != 3)//向文件中写入10个字节的数据到缓冲区,写入3次,说明总共写入了30个字节

{

printf("write file failed!\r\n");

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,读取文件中的内容*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[100];

memset(buff,0,sizeof(buff));

pFile = fopen("file.txt","r");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

if(fread(buff,10,2,pFile) != 2)//从文件中读取10个字节的数据到缓冲区,读取2次,说明总共读取了20个字节

{

printf("read file failed!\r\n");

}

printf("

文件的操作,可以理解为输出输入终端为文件,通常我们的输入输出都是显示屏,其实原理一样,都是先将数据写入到内存,然后在从内存写到终端(显示器或者文件)

文件操作的主要步骤

1、打开文件,得到将要操作的文件的指针

2、设置文件指针的位置,打开文件时,默认指向文件的开头,以追加方式打开文件时,指向文件的末尾

3、读写文件

4、关闭文件,切记不要忘了这一步,否则造成输入、输出的内容不能正常保存到文件,因为,计算机向文件中保存文件,是先将数据写到缓冲区,当缓冲区满了之后,再一起写入到文件,所以如果忘了,可能造成文件内容确实,也可以写文件写完后,刷新以下缓存,fflush()。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define SUCCESS 1

#define ERROR -65535

/*文件使用方式

1、r(只读),若使用该方式打开文件,则只能读取文件中的内容,另外打开的文件必须是已经存在的文件,若不存在,会提示错误。

2、w(只写),若使用该方式打开文件,则只能向文件中写数据,若打开的是一个已经存在的文件,会先删除原来文件的内容,用新的文件内容覆盖,若打开的文件不存在,会创建一个该名字的文件,并写入数据

3、a(追加),打开一个文件,将新的内容插入到原来内容的末端,若打开的文件不存在,会提示错误

4、b(二进制文件),通常和r,b,w结合起来使用,只是打开文件的文件是一个二进制的文件,默认的是文本文件

5、r+(读写),打开一个已经存在的文件,读或者写内容进去,注意该文件必须已经存在

6、w+(读写),新建一个文件,文件可以存在,也可以不存在,若存在,则先删除源原文件内容,再写入新的内容

7、a+(读写),打开一个存在的文件,新的内容插入到原来内容后面

*/

/*文件操作的步骤

1、打开文件,返回文件的指针fopen("filepath","mode")

2、操作文件,读写操作fread、fwrite、fgets、fputs、fgetc、fputc、fscanf、fprintf

3、关闭文件fclose(*fp)

*/

/*文件操作常用的函数

1、ch = fgetc(fp),从文件中读取一个字符,返回给ch,遇到文件结束符,返回EOF(-1)

2、fputc(ch,fp),向文件中写入一个字符,将字符ch写入到文件中,写成功,返回写入的字符;写失败,返回EOF(-1)

注意:打开文件的时候,文件指针指向开头的地方,读取一个或者写一个,指针向后移动,到达文件尾部,有一个文件结束符EOF

3、fread(buff,size,count,fp);从文件中读取内容,buff保存从文件中读取的内容,size是单个buff结构的大小,count表示一次要从文件中读取多少个这样的结构,fp表示文件指针,size决定了每次从文件中读取多少字节的内容

4、fwrite(buff,size,count,fp);向文件中写入内容,buff保存从文件中读取的内容,size是单个buff结构的大小,count表示一次要从文件中读取多少个这样的结构,fp表示文件指针,size决定了每次从文件中读取多少字节的内容

5、fprintf(fp,格式字符串,输出列表),格式化输出,和printf用法一样,只不过这个用于将内容格式化输出到磁盘文件上,而不是格式化输出到终端上

6、fscanf(fp,格式字符串,地址列表),格式化输出,和scanf用法一样,只不过这个用于从磁盘文件上读取数据保存在指定的地址上

文件的定位,文件指针的定位

7、rewind(fp):将文件指针指向文件的开头位置

8、fseek(fp,偏移量,文件指针起始位置),将文件指针按照起始位置作位置偏移,文件指针的起始位置可以有三种:起始位置(SEEK_SET 0)、当前位置(SEEK_CUR 1)、末尾位置(SEEK_END 2)

9、ftell(fp),返回文件指针当前的位置,相对于文件头位置的偏移量。通过这三个函数,组合可以返回文件的字节数,先将文件指针置于末端,然后返回文件指针的位置,即可得到文件的大小

*/

/*只写的方式打开一个不存在的文件,会提示错误*/

#if 0

int main()

{

FILE *pFile = NULL;

pFile = fopen("./file.txt","r");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

fclose(pFile);

return SUCCESS;

}

#endif

/*只读的方式打开一个不存在的文件,若文件不存在,会创建一个新文件*/

#if 0

int main()

{

FILE *pFile = NULL;

pFile = fopen("./file.txt","w");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个文件,若文件不存在,会创建一个新文件,向文件中写入一个字符串*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[255] = {"hello,this is ducument operation!\r\n"};

int len = strlen(buff);

int i = 0;

pFile = fopen("./file.txt","w");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

/*逐个字符的往文件中写入*/

for(i = 0;i < len;i++)

{

fputc(buff[i],pFile);

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,读取文件中的一个字符*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[100];

int i = 0;

char ch;

pFile = fopen("./file.txt","r");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

while((ch = fgetc(pFile)) != EOF)

{

buff[i] = ch;

++ i;

if(i >= 99)

{

break;

}

}

buff[i] = '\0';

printf("%s",buff);

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,向文件中写入内容*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[255] = {"hello,this is ducument operation!\r\n"};

pFile = fopen("file.txt","w");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

if(fwrite(buff,10,3,pFile) != 3)//向文件中写入10个字节的数据到缓冲区,写入3次,说明总共写入了30个字节

{

printf("write file failed!\r\n");

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,读取文件中的内容*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[100];

memset(buff,0,sizeof(buff));

pFile = fopen("file.txt","r");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

if(fread(buff,10,2,pFile) != 2)//从文件中读取10个字节的数据到缓冲区,读取2次,说明总共读取了20个字节

{

printf("read file failed!\r\n");

}

printf("%s",buff);

fclose(pFile);

return SUCCESS;

}

#endif

/*通过文件指针的操作,获取文件中文件的大小*/

#if 1

int main()

{

int len = 0;

FILE *pFile = NULL;

pFile = fopen("file.txt","r");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

fseek(pFile,0,SEEK_SET);//将文件指针置于文件开头的地方

fseek(pFile,0,SEEK_END);//将文件指针置于文件末尾的地方

len = ftell(pFile);

printf("file len is %d",len);

return SUCCESS;

}

#endif

",buff);

fclose(pFile);

return SUCCESS;

}

#endif

/*通过文件指针的操作,获取文件中文件的大小*/

#if 1

int main()

{

int len = 0;

FILE *pFile = NULL;

pFile = fopen("file.txt","r");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

fseek(pFile,0,SEEK_SET);//将文件指针置于文件开头的地方

fseek(pFile,0,SEEK_END);//将文件指针置于文件末尾的地方

len = ftell(pFile);

printf("file len is 0",len);

return SUCCESS;

}

#endif

推荐阅读