目录
1.什么是文件
程序文件包括源程序文件(.c) 目标文件(.obj) 可执行文件(.exe).数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
2.文件的打开和关闭
2.1文件指针
例如:
struct student{
char name[20];
int age;
char sex;
};
typedef struct student FILE;
FILE* pf;//文件指针变量
2.2打开和关闭文件
文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件.
int main()
{
//打开文件
FILE* pf = fopen("test.txt", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
3.文件的顺序读写
3.1 对比一组函数
scanf/fscanf/sscanfprintf/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。