IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 文件复习a -> 正文阅读

[C++知识库]文件复习a

目录

一、

二、


一、

#include<stdio.h>
#include<string.h>
#include<stdlib.h> //#include<malloc.h>

typedef struct Person
{
	char name[20];
	char sex[4];
	int age;
}Person;

int main()
{
	//打开文件
	FILE* fp = fopen("C:\\Users\\86176\\Desktop\\文件.txt",""); //这个函数在stdio.h里 
	//w:打开时清空 
 	if(fp == NULL)
 	{
 		printf("打开文件失败\n");
	 }
	 
	//操作,fgetc函数读取完字符会将文件指针移动到下一个字符 
//	char ch = fgetc(fp); 
//	printf("%c\n",ch);
//	ch = fgetc(fp); 
//	printf("%c\n",ch);
	
	//读取全文 
//	char ch; 
//	while(EOF != (ch = fgetc(fp))) //	fgetc():读到文件末尾返回EOF 
//	{
//		printf("%c",ch);
//	 } 
	 
	 //读取一行
	 //fgets函数读取完字符也会将文件指针移动到下一个字符 
//	 char str[200];// = {0}; //将数组中全部元素的值赋为0 
//	memset(str,0,sizeof(str)); //清零,同上 
//	 char *p = fgets(str , 200 , fp); //此函数返回str ,读不到了就返回NULL	 
//	 printf("%s",str);	//自动会换行 
// 	 printf("%s",p);
 
	//while读取所有行
//	char str[200];
//	while(fgets(str,200,fp))
//	{
//		printf("%s",str);
//	 } 

	//fread函数——读取()个字符 
	//返回实际读取的大小 
//	int n = fread(str , 1 , 20 , fp);//读20个1字节的 
//	str[n] = '\0';
//	printf("%s\n" , str);

	//读取整个文件 
//	while(fread(str , 1 , 100 , fp))//读100个1字节的,读完(没读到)就返回0
//	{
//		printf("%s",str);
//	}

	//写入一个字符——w:清空写 
//	fputc('A',fp);  
//	fputc('A',fp);
	
	//写入字符串
//	char * str = "C:\\Users\\86176\\Desktop\\C语言程序设计\\blibli-文件\\文件1.c[Warning] character constant too long for its type\r";
//	fputs(str , fp); //“写 ”操作是不会自动换行的 ,需要加 \n 换行 
//	fputs(str , fp); 
//	fputs(str , fp); 

	//fwrite函数——什么都能写
	
	//写字符串
//	fwrite(str , 1 , strlen(str) , fp); 

	//写结构体: 
//	Person p1 = {"张三","男",20};
//	fwrite(&p1 , 1 , sizeof(p1) , fp); //文件指针:写完以后指针漂移到下一个 
//	fwrite(&p1 , 1 , sizeof(p1) , fp);
//	fwrite(&p1 , 1 , sizeof(p1) , fp);	
	
	//写整数 
//	int num = 345678;
//	fwrite(&num , sizeof(num), 6 , fp); 		
//	
//	//文件指针定位
//	fseek(fp , 0 , SEEK_SET); 
//	
//	int num2;
//	fread(&num2 , sizeof(num) , 6 , fp);
//	printf("%d",num2);

	//文件定位:文件 读和写 完后,文件指针会移动到下一个字符 ,当我想从自定义的位置(例如文件开头\
	第十个字符开始读 ),就用文件定位
	//fseek函数的作用是重新定位文件读写指针的位置。
	//fseek(文件指针,移动偏移量,哪个位置开始计算偏移量) 
/*	char str[200] =  {0};
		
	printf("\n--------文件开头:--------\n");
	int num = fseek(fp , 10L ,SEEK_SET); 
	fread(str,1,100,fp);
	printf("%s\n",str);
		
	printf("\n--------当前位置:--------\n");
	fseek(fp , -10L ,SEEK_CUR); 
	fread(str,1,100,fp);
	printf("%s\n",str);
	
	printf("\n--------文件末尾:--------\n");
	str[200] = {0}; 这条语句不可用来清零,因为这是数组
	memset(str,0,sizeof(str));  //对数组清零的语句。如果不清零,输完10字节之后将会输出当前位置的字符 
	fseek(fp , -20 , SEEK_END);
	fread(str,1,10,fp);
	printf("%s\n",str); */
	
	//读取文件的最后一行
	//如果读到的是\n,就停止读 
	char ch = 0;
	int length = 0;
	fseek(fp,-1,2);
	while(fread(&ch , 1 , 1 , fp))
	{
		if(ch=='\n')
		{
			break;
		}else
		{
			fseek(fp , -2 , 1);		
//			printf("%c",ch); 可以一个一个读 
			length++;
		}
	}
	printf("\nlength = %d\n",length); //17
	char *p = malloc(sizeof(char) * length + 1); //动态分配内存 
	memset(p , 0 , length+1);
	fseek(fp,-length,2); 
	fread(p,1,length,fp);
	printf("%s",p);
	
	//输出倒数第二行
/*	fseek(fp,-length+1,1);
	int length1 = 0;
	while(fread(&ch,1,1,fp))
	{
		if(ch == '\n')
		{
			break;
		}else
		{
			fseek(fp,-2,1);
			length1++;
		}
	}
	printf("\nlentgh1 = %d\n",length1); //25  */
	
//	rewind(fp);//文件指针重置到文件的开头 
	fseek(fp , 0 ,2);
	int num1 = ftell(fp); //获取文件指针当前的位置 
	printf("\n文件大小:%d",num1); //378  通过右击txt →属性可验证正确性 
	 
	//关闭文件
	fclose(fp);  
	//释放内存
	free(p); 
 } 

二、

#include<stdio.h>
#include<process.h>

int main()
{
	char ch;
	FILE *fp;
	
	/*
		真实路径:C:\Users\86176\Desktop\CAONIMA.txt
		\为转义字符所以变更为:
				:C:\\Users\\86176\\Desktop\\CAONIMA.txt 
	*/
	
	fp = fopen("C:\\Users\\86176\\Desktop\\CAONIMA.txt ","r+");
	if(fp == NULL)
	{
		printf("打开失败");
		exit(1);	//exit(0):程序正常结束 exit(!0):程序异常结束 
	}
	else
	{
		printf("打开成功啦!\n");
	}
//	
//	printf("请输入一串字符(按#结束):"); 
//	
//	while((ch = getchar()) != '#')
//	{
//		fputc(ch,fp);	//往文件中写入一个字符
//		//两个参数   ch:要写入的字符,fp:指向文件的文件指针 
//	}
//	
//	printf("输入完毕,扣1读取文件,扣0关闭文件:"); 

//	getchar();
//	scanf("%c",&ch);
//	
//	if(ch == '1')
//	{
		ch=fgetc(fp);
		while(ch != EOF)
		{
			putchar(ch);
			ch=fgetc(fp);
		}
//	}
		/*
		fclose(fp) 一个参数 fp:文件指针 
					返回值: 0-代表正常结束 , -1 代表异常结束
					EOF是stdio.h的宏定义常量,值为-1。 #define EOF (-1) 
		*/
		if(fclose(fp)!=0)
		{
			printf("Can't close the file!\n");
		}
		else
		{
			printf("Close success!");
		}
	
	return 0;
 } 

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 15:59:31  更:2022-04-06 16:03:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:04:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码