【C语言基础】 第十天 | 知识点总结

在这里插入图片描述

printf — sprintf — fprintf:
	变参函数:参数形参中 有“..., 最后一个固参通常是格式描述串(包含格式匹配符), 函数的参数个数、类型、顺序由这个固参决定。

	printf("hello");
		
	printf("%s", "hello");

	printf("ret = %d+%d\n", 10, 5);

	printf("%d = %d%c%d\n", 10+5, 10, '+', 5);			--> 屏幕


	char buf[1024];   //缓冲区  

	sprintf(buf, "%d = %d%c%d\n", 10+5, 10, '+', 5);		--> buf 中

	FILE * fp = fopen();

	fprintf(fp, "%d = %d%c%d\n", 10+5, 10, '+', 5);			--> fp 对应的文件中
scanf — sscanf — fscanf
	scanf("%d", &m);		键盘 --> m


	char str[] = "98";

	sscanf(str, "%d", &m);		str --> m


	FILE * fp = fopen("r");

	fscanf(fp, "%d", &m);		fp指向的文件中 --> m

fprintf()函数:
int fprintf(FILE * stream, const char * format, ...);
fscanf()函数:
int fscanf(FILE * stream, const char * format, ...);

		成功:正确匹配的个数。

		失败: -1

	1) 边界溢出。 存储读取的数据空间。在使用之前清空。

	2)fscanf函数,每次在调用时都会判断下一次调用是否匹配参数2, 如果不匹配提前结束读文件。(feof(fp) 为真)。

练习:文件版排序
	生成随机数,写入文件。将文件内乱序随机数读出,排好序再写回文件。
fgetc --- fputc

fgets --- fputs

fprintf -- fscanf		默认处理文本文件。

fwrite()函数: 既可处理以文本文件。也处理二进制文件。
	写出数据到文件中。

	stu_t stu[4] = { ...... };

	size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);1:待写出的数据的地址

		参2:待写出数据的大小

		参3:写出的个数				--2 x 参3 = 写出数据的总大小。

		参4:文件

		返回值: 成功:永远是 参3 的值。 --- 通常将参21. 将参3传实际写出字节数。

			 失败:0 
fread()函数:
	从文件fp中读出数据。

	size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);1:读取到的数据存储的位置

		参2:一次读取的字节数

		参3:读取的次数				--2 x 参3 = 读出数据的总大小

		参4:文件

		返回值: 成功:参数3.	--- 通常将参21. 将参3传欲读出的字节数。				

			 0:读失败 -- 到达文件结尾 -- feof(fp)为真。 
练习:大文件拷贝
	已知一个任意类型的文件,对该文件复制,产生一个相同的新文件。

	1. 打开两个文件, 一个“r”, 另一“w”

	2. 从r中 fread , fwrite到 w 文件中。

	3. 判断到达文件结尾 终止。  

	4. 关闭。

	注意: 在windows下,打开二进制文件(mp3、mp4、avi、jpg...)时需要使用“b”。如:“rb”、“wb”
	
随机位置 读:
	文件读写指针。在一个文件内只有一个。

	fseek():

		int fseek(FILE *stream, long offset, int whence);1:文件

			参2:偏移量(矢量: + 向后, - 向前)

			参3SEEK_SET:文件开头位置

				SEEK_CUR:当前位置

				SEEK_END:文件结尾位置

		返回值: 成功:0, 失败: -1

	ftell():

		获取文件读写指针位置。

		long ftell(FILE *stream);

		返回:从文件当前读写位置到起始位置的偏移量。

		
		借助 ftell(fp) + fseek(fp, 0, SEEK_END); 来获取文件大小。

	rewind():

		回卷文件读写指针。 将读写指针移动到起始位置。

		void rewind(FILE *stream);
Linux和windows文件区别:
	1)对于二进制文件操作, Windows 使用“b”, Linux下二进制和文本没区别。

	2)windows下,回车 \r, 换行 \n。 \r\n  , Linux下 回车换行\n

	3) 对文件指针,先写后读。windows和Linux效果一致。

		       先读后写。Linux无需修改。windows下需要在写操作之前添加 fseek(fp, 0, SEEK_CUR); 来获取文件读写指针,使之生效。
获取文件状态:
	打开文件,对于系统而言,系统资源消耗较大。

	int stat(const char *path, struct stat *buf);1: 访问文件的路径

		参2: 文件属性结构体

		返回值: 成功: 0, 失败: -1
删除、重命名文件:
	int remove(const char *pathname); 删除文件。

	int rename(const char *oldpath, const char *newpath);  重名文件
缓冲区刷新:
	标准输出-- stdout -- 标准输出缓冲区。   写给屏幕的数据,都是先存缓冲区中,由缓冲区一次性刷新到物理设备(屏幕)

	标准输入 -- stdin -- 标准输入缓冲区。	从键盘读取的数据,直接读到 缓冲区中, 由缓冲区给程序提供数据。

	预读入、缓输出。

	行缓冲:printf(); 遇到\n就会将缓冲区中的数据刷新到物理设备上。

	全缓冲:文件。 缓冲区存满, 数据刷新到物理设备上。

	无缓冲:perror。 缓冲区中只要有数据,就立即刷新到物理设备。

	

	文件关闭时, 缓冲区会被自动刷新。  隐式回收:关闭文件、刷新缓冲区、释放malloc

	手动刷新缓冲区: 实时刷新。

		int fflush(FILE *stream);

			成功:0

			失败:-1


更多有关于Linux C++后台开发的学习分享,感兴趣的朋友们可以关注我的个人公众号
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值