C语言文件操作

导读:本篇文章讲解 C语言文件操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1.什么是文件

2.文件的打开和关闭

2.1文件指针

2.2打开和关闭文件

3.文件的顺序读写

3.1 对比函数


1.什么是文件

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。
 
程序文件 
包括源程序文件(.c) 目标文件(.obj) 可执行文件(.exe).
数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,
或者输出内容的文件。

文件名
文件名包含
3
部分:文件路径
+
文件名主干
+
文件后缀
例如:
c:\code\test.txt
为了方便起见,文件标识常被称为
文件名

2.文件的打开和关闭

2.1文件指针

缓冲文件系统中,关键的概念是

文件类型指针

,简称

文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE
.

例如:

struct student{

       char name[20];

       int age;

       char sex;

};

typedef struct student FILE;

不同的
C
编译器的
FILE
类型包含的内容不完全相同,但是大同小异。
每当打开一个文件的时候,系统会根据文件的情况自动创建一个
FILE
结构的变量,并填充其中的信息,
使用者不必关心细节。
一般都是通过一个
FILE
的指针来维护这个
FILE
结构的变量,这样使用起来更加方便。
下面我们可以创建一个
FILE*
的指针变量
:
FILE* pf;//文件指针变量
定义pf是一个指向FILE
类型数据的指针变量。可以使
pf
指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联
的文件

2.2打开和关闭文件

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件

ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件.

C语言文件操作

 

int main()
{
	//打开文件
	FILE* pf = fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

3.文件的顺序读写

C语言文件操作

3.1 对比一组函数

scanf/fscanf/sscanf
printf/fprintf/sprintf

1、例:使用scanf函数输入数据。

#include<stdio.h>

int main()

{

int a,b,c;

printf(“输入 a, b, c\n”);

scanf(“%d,%d,%d”, &a, &b, &c);

printf(“a = %d b = %d c = %d\n”, a, b, c);

return 0;

}

2、int fscanf(文件指针,格式字符串,输入列表);

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

用 法: int fscanf(FILE *stream, char *format,[argument…]);

如:

FILE *fp;

char a[10];

int b;

double c;

fscanf(fp,”%s%d%lf”,a,&b,&c)

返回值:整型,成功读入的参数的个数

3、大家都知道sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。但新手可能并不知道处理字符串时的一些高级用法,这里做个简要说明吧。

1. 常见用法。
char str[512] = {0};
sscanf(“123456 “, “%s”, str);
printf(“str=%s\n”, str);

2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf(“123456 “, “%4s”, str);
printf(“str=%s\n”, str);//str的值为1234

3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
sscanf(“123456 abcdedf”, “%[^ ]”, str);//注意^后面有一空格
printf(“str=%s\n”, str);

4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
sscanf(“123456abcdedfBCDEF”, “%[1-9a-z]”, str);
printf(“str=%s\n”, str);

5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
sscanf(“123456abcdedfBCDEF”, “%[^A-Z]”, str);
printf(“str=%s\n”, str);

printf函数

原型: extern int printf(const char *format,…);
说明:printf()函数是格式化输出函数, 一般用于向终端(显示器、控制台等)输出字符。

printf()函数的调用格式为: printf(“<格式化字符串>”, <参量表>)。

格式控制由要输出的文字和数据格式说明(转换说明)组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

fprintf函数

原型: int fprintf( FILE *stream, const char *format, [ argument ]…)

说明:fprintf是格式化写—库函数,位于头文件<stdio.h>中,其作用是格式化输出到一个流/文件中。

参数:

FILE*stream:文件指针

const char* format:输出格式

[argument]:附加参数列表

sprintf函数

原型:
int sprintf( char *buffer, const char *format [, argument] … );
说明:sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中,位于头文件<stdio.h>中。
参数:
buffer:char型指针,指向将要写入的字符串的缓冲区。

format:格式化字符串。

[argument]…:可选参数,可以是任何类型的数据。

返回值:
sprintf 返回以format为格式argument为内容组成的结果被写入buffer 的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的buffer后,函数sprintf 返回5。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119601.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!