前言
Hello,小伙伴们你们的作者君又来了,上次我们简单介绍了文件的坐拥并简单提到了数据的读取,和C语言的默认流的作用,今天我将继续带领大家探索文件的奥秘,大家准别好了吗?
在内容开始之前还是按照惯例,求三连,如果您喜欢我的内容,还请不要吝啬手中的三连,您的三连就是我更新的最大动力,好,废话不多说,开始我们今天的学习。
我们紧接上期的内容,没看上期的同学还请先去补课哈,若有问题欢迎大家来评论区参与理性谈论。http://t.csdnimg.cn/PdzPn
1.文件的顺序读写
1.1顺序函数读写介绍
上面说的适用与所有输入流一般指标准输入流和其他输入流(如文件输入流);所有输出流,一般指适用于标准输出流和其他输入流(文件输出流)。
fputs//fgets
fput函数的作用就相当于将
I am a student
are you OK 写到了test.txt文件中
fgetc函数的作用就是从文件中读取数据,这时数据可以被打印。
char*string -->将数据读取到的字符的地址
int n --->要读取的字节个数
FILE* stream 数据来源的文件
fgetc函数在遇到‘\n’时就会停止读取,不会进行换行打印。
1.2对比一组函数
scanf/fscnaf/sscanf
printf/fprintf/sprintf
fsanf // fprintf
fscanf的作用就相当于从文件中读取标准格式化的数据
相对的fprintf就是从变量中读取数据然后写进文件中。
sscanf // sprintf
从上面的代码就可看出两个函数的作用:
1.sprintf:就是将将格式化的数据写进字符串。
2.sscanf:就是从字符串中读取数据写进变量中。
2.文件的随机读写
2.1 fseek
int fseek ( FILE * stream, long int offset, int origin );
/* fseek example */
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ( "example.txt" , "wb" );
fputs ( "This is an apple." , pFile );
fseek ( pFile , 9 , SEEK_SET );
fputs ( " sam" , pFile );
fclose ( pFile );
return 0;
}
根据文件指针的位置和偏移量来定位文件指针。
2.2 ftell
返回文件指针相对于起始位置的偏移量
long int ftell ( FILE * stream );
/* ftell example : getting size of a file */
#include <stdio.h>
int main ()
{
FILE * pFile;
long size;
pFile = fopen ("myfile.txt","rb");
if (pFile==NULL)
perror ("Error opening file");
else
{
fseek (pFile, 0, SEEK_END); // non-portable
size=ftell (pFile);
fclose (pFile);
printf ("Size of myfile.txt: %ld bytes.\n",size);
}
return 0;
2.3 rewind
让指针的位置回到文件的起始位置
void rewind ( FILE * stream );
/* rewind example */
#include <stdio.h>
int main ()
{
int n;
FILE * pFile;
char buffer [27];
pFile = fopen ("myfile.txt","w+");
for ( n='A' ; n<='Z' ; n++)
fputc ( n, pFile);
rewind (pFile);
fread (buffer,1,26,pFile);
fclose (pFile);
buffer[26]='\0';
printf(buffer);
return 0;
}
好,今天的文件函数学习就到这里,咱们下期再见,拜拜。