C语言部分--文件相关操作(基础款easy难度)

前述:文件操作只需熟悉掌握流程,熟悉各函数,熟悉操作即可

一些基本概念:

1.数据文件分类:

一般就两种

一种是二进制文件,数据以二进制形式存储

另一种是文本文件以ASCII码形式存储的文件

2.数据流:

所谓数据流就是程序的数据流动通过流实现,我们想要读取数据或者输入数据需要打开对应的流,,和确定方向

stdin:标准输入流--scanf

stdout:标准输出流--printf

stderr:标准错误流,一般直接输出到屏幕上

三个流指针类型都是FILE*,通常称为文件指针

3.打开方式:

掌握几种(其他的可以自行了解)

w:只写,若是打开的不存在可以默认创建--注意以"w"打开会直接覆盖原文件内容

r:只读,打开不存在会报错

wb:针对二进制

rb:针对二进制

a:追加

基本代码逻辑:

打开文件

...操作

关闭文件

4.也可以向输出流stdout中写入数据,会直接输出在屏幕上

File* pf = fopen("text.txt","w");
if(pf == NULL)
{
    perror("fopen");
    return 1;
}

...
fclose(pf);
pf = NULL;

5.printf(a);a是字符数组名,可以不用格式化直接打印

Function

1.fwrite

size_t fwrite(const void* ptr,size_t size,size_t count,FILE* stream)

返回值是成功写入的元素个数整数

参数:

ptr : 指向被写的元素地址

size:被写的元素尺寸大小

count:被写入的元素个数

stream:文件流

2.fopen

FILE * fopen ( const char * filename, const char * mode )

返回值是指向打开的文件的指针;

参数:

filename:想要打开的文件名称

mode:打开文件的方式

3.fclose

int fclose ( FILE * stream )

返回值:

成功关闭流则返回0

关闭失败则返回EOF(-1)

4.fprintf

int fprintf ( FILE * stream, const char * format, ... );--按照格式要求把字符串写入流

返回值:

成功则返回成功写入的元素个数

失败则返回一个负数

5.fgetc

int fgetc ( FILE * stream );--读取光标此时的位置的字符

返回值:

读到文件末尾或者读取失败返回EOF

成功返回该字符的ASCII值

6.fputs

int fputs ( const char * str, FILE * stream );

返回值:成功返回一个非负数,失败返回EOF.

7.fgets()

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

返回读取的字符串的地址

8.fputc()

int fputc ( int character, FILE * stream );

写入成功返回ASCII码值

失败EOF

9.fread()

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

从流里读取一整块数据进入数组

10.fwrite()

用法和fread一样

调整文件指针位置三个函数:

1.fseek()

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

origin有三个值,

SEEK_SET文件开头

SEEK_CUR光标此时的位置

SEEK_END文件末尾

offset是偏移量

2.ftell()返回文件指针想对于起始位置的偏移量

long int ftell ( FILE * stream )

3.void rewind ( FILE * stream );让文件指针回到起始位置

sscanf-流是字符串

fscanf-流可以是文本流也可以是标准格式流

sprintf,fprintf也是一样

以下是一些主播的测试代码

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//int main()
//{
//	int a = 0;
//	FILE* pf = fopen("text1.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fpoen");
//		return 1;
//	}
//
//	while ((a = getc(pf)) != EOF )
//	{
//		
//		printf("%c", a);
//	}
//	
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("text2.txt", "w");
// if(pf == NULL)
// {
//		perror("fopen");
//		return 1;
// }
//	fputs("123456789", pf);
//	fseek(pf, -3, SEEK_END);
//	fputs("a", pf);
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("text2.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//	}
//	fseek(pf, -1, SEEK_END);
//	int size = ftell(pf);
//	printf("%d", size);
//	fputs("wo shi ni die", stdout);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	char a[10] = {0};
//	FILE* pf = fopen("text1.txt", "r");
//	if (pf = NULL)
//	{
//		perror("fopen:");
//	}
//	fgets(a, 5, pf);
//	/*fprintf(stdout, "%c", a);*/
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

int main()
{
	FILE* pf = fopen("text1.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	char a[10] = "123456";
	fwrite(a, 1, 6, pf);
	fread(a, 1, 6, stdin);
	fprintf(stdout, "%s\n", a);
	printf(a);
	fclose(pf);
	pf = NULL;

	return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值