计算机中的流:在C语言中将通过输入/输出设备(键盘、内存、显示器、网络等)之间的数据传输抽象表述为“流”。
1、文本流和二进制流
在文本流中输入输出的数据是一系列的字符,可以被修改在二进制流中输入输出数据是一系列字节,不能以任何方式修改。
2、预定义的流
文件的概念:一般指存储在外部介质上数据的集合。操作系统是以文件为单位对数据进行管理的,如果想找放在外部介质上的数据,必须先按文件名找到指定的文件,然后从文件中读取数据。
一个文件要有唯一的文件标识,以便用户识别和引用。文件标识包括3部分,分别为文件路径、文件名主干和文件后缀。
1、二进制文件
数据在内存中是以二进制形式存储的,如果不加转换地输出外存,就是二进制文件。
2、文本文件
文本文件又称为ASCLL文件,每一个字节放一个字符地ASCLL码。
文件指针:在C语言中,对文件的所有操作都必须依靠文件指针来完成。定义格式:
FILE* 变量名;
打开文件:fopen()函数,其返回值类型为文件指针。函数声明:
FILE * fopen(char* filename,char* mode);
关闭文件:fclose()函数,用于关闭文件,其返回值类型为int类型。函数声明:
int fclose(FILE *fp);
单字符读写文件
1、使用fputc()函数向文件写入字符,函数声明:
int fputc(char ch,FILE *fp);
ch表示写入的内容,fp表示一个文件指针,int表示函数返回值的类型为整数类型。
2、使用fgetc()函数读取文件中的字符,语法格式:
char fgetc(FILE *fp);
fp表示一个文件指针变量,char表示函数返回值的类型为字符类型。程序示例:
#include
int main()
{
FILE *fp;
int i=0;
char arr[]="I Like C Program";
fp=fopen("hello.txt","w"); //打开文件,若文件不存在则创建文件
if(fp==NULL)
{
printf("打开文件失败!\n");
return -1;
}
while(arr[i]!='\0')
{
fputc(arr[i],fp);
i++;
}
fclose(fp);
return 0;
}
#include
#include
int main()
{
FILE *fp;
char ch;
fp=fopen("hello.txt","r"); //打开文件,若文件不存在则创建文件
if(fp==NULL)
{
printf("打开文件失败!\n");
exit(0);
}
ch=fgetc(fp); //从文件中读取每个字符
while(ch!=EOF)
{
printf("%c",ch);
ch = fgetc(fp);
}
printf("\n");
fclose(fp);
return 0;
}
单行读写文件
1、使用fput()函数向文件写入字符串,函数声明:
int fputs(const char* str,FILE *file);
参数str表示指向待写入的字符串的字符指针;参数file表示文件指针,该指针指向需要写入字符串的文件;返回值类型int类型表示函数返回值的类型为整型。
2、fgets()函数读取文件中的字符串,或读取指定长度的字符串,函数声明:
char * fgets(char *buf,int maxCount,FILE *file);
参数buf指向用来存储文件数据的数组的地址;参数maxCount指明存储数据的大小,参数file是将要读取的文件的文件指针。
二进制读写文件
1、fwrite()函数向文件写入数据,以二进制的形式将数据写入文件,函数声明:
unsigned int fwrite(const void* str,unsigned int size,unsigned int count,FILE * file);