C语言基础10:c语言文件操作
Merry Christmas
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 个 ==========
我知道你在看哟
新浪微博:@秀米XIUMI