vlambda博客
学习文章列表

C语言基础10:c语言文件操作

C语言基础10:c语言文件操作

Merry Christmas

C语言基础10:c语言文件操作

c语言文件操作



#include<stdio.h>

int main()

{

/*

文件分类:文本文件和二进制文件

   (1)文本文件:  保存的时候,每一个字符对应一个字节

   (2)二进制文件:按照二进制编码保存的文件


   文件操作:打开、写入、读取、关闭

*/

//1.打开文件  :fopen( );  按f1打开fopen手册

FILE* fp=fopen("C:\\Users\\ASUS\\Desktop\\test.txt","r+" );//表示在c盘的。。。。"r",打开方式   绝对路径,一般用双斜杆

if (fp == NULL)

{

printf("打开文件失败.\n");//成功

return 0;

}



//2.读文件(操作)

//fgetc(); //能够从文件中读取一个字符

          //操作,fgetc这个函数读取完会将文件指针移动的下一个字符。

/*

函数原型:

int fgetc(FILE *stream);

*/

/*

char ch=fgetc(fp);

printf("%c\n", ch);

ch = fgetc(fp);

printf("%c\n", ch);

*/


//EOF:文件结束

/*char ch;

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

{

printf("%c", ch);

}*/



//3. fgets函数 :每次读取一行

/*

//fgets这个函数读取完会将文件指针移动的下一个字符。

函数原型:

char *fgets(char *str ,int n, FILE *stream);

*/

//memset(str,0,sizeof(str));//清零

//char str[200] = { 0 };//清0

//fgets(str, 200, fp);

//printf("%s\n", str);

//fgets(str, 200, fp);

//printf("%s\n", str);


//全部读取出来

/*while (fgets(str, 200, fp))

{

printf("%s\n", str);

}*/



//4.fread函数:  返回实际读取的大小


/*int n=fread(str, 1, 20, fp);

str[n] = '\0';

printf("%s\n", str);*/

//全部读取出来

/*while (fread(str, 1, 100, fp))

{

printf("%s", str);

}*/




//5.写一个字符,清空之后再写入

/*fputc('A', fp);

fputc('B', fp);*/



//6.写入字符串

/*char* str = "xxbj9.vcxproj -> D:\\c语言代码\\xxbj9\\Debug\\xxbj9.exe\r\n";*/

/*fputs(str, fp);

fputs(str, fp);*/



//7.fwrite函数

//int num = 456789;

//fwrite(&num, 1,sizeof(num), fp);


////文件指针定位

//fseek(fp,0,SEEK_SET);


//int num2;

//fread(&num2, 1,sizeof(num), fp);

//printf("%d\n", num2);



//7.文件定位

//fseek函数:能够移动文件指针

/*

函数原型:

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

*/

//char str[200] = { 0 };

//fseek(fp,5,SEEK_SET);//5表示从第五个开始读

//fread(str, 1, 100, fp);

//printf("%s\n", str);


//fseek(fp, 10, SEEK_CUR);//从当前位置的后面10个位置开始读,如果是  -10  表示倒退10个

//fread(str, 1, 100, fp);//读100个

//printf("%s\n", str);


//fseek(fp, 10, SEEK_CUR);//  -10  表示倒退10个

//fread(str, 1, 100, fp);//读100个

//printf("%s\n", str);


//fseek(fp, -20, SEEK_END);// 表示从末尾倒退20个

//memset(str, 0, sizeof(str));//清空字符串

//fread(str, 1, 100, fp);//读10个字节

//printf("----------\n%s\n", str);



//读取文件最后一行

fseek(fp, -1, SEEK_END);

char ch = 0;

int length = 0;

while (fread(&ch, 1, 1, fp))

{

if (ch=='\n');

break;

fseek(fp, -2, SEEK_CUR);//从当前位置定位

length++;//统计退了多少格。

}

/*printf("length=%d\n", length);*/


fseek(fp, -length, SEEK_END);

char *buffer = malloc(sizeof(char)*length + 1);

memset(buffer, 0, length + 1);//清空动态内存

fread(buffer, 1, length,fp);

printf("%s\n", buffer);


//释放:

free(buffer);



//rewind函数:将文件指针重置到文件开头

//ftell函数:告诉当前文件指针所在位置。

rewind(fp);

fseek(fp, 0, SEEK_END);

int nsize = ftell(fp);//当前指针位置在文件末尾,代表文件大小

printf("文件的大小:%d\n", nsize);



//.关闭文件:在文件使用结束之后,一定要关闭文件 fclose( );

//函数原型

/*

int fclose(FILE *stream);

*/

fclose(fp);//关闭上面打开的文件

return 0;

}


导读

操作文件:


ABU? j9.vcxproj -> D:\c语言代码\xxbj9Debug\xxbj9.exe

1>d:\c语言代码\xxbj9\xxbj9\xxbj9.c(13): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1>          d:\360安全浏览器下载\软件\vc\include\stdio.h(211) : 参见“fopen”的声明

1>  xxbj9.vcxproj -> D:\c语言代码\xxbj9\Debug\xxbj9.exe

========== 生成:  成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========



我知道你在看

C语言基础10:c语言文件操作




新浪微博:@秀米XIUMI