C语⾔⽂件读写的实现
关于C语⾔的⽂件读写,我将介绍下⾯这⼏种⽅式:
字符的读写:使⽤ fgetc() 函数 和 fputc() 函数;
字符串的读写:使⽤ fgets() 函数和 fputs() 函数;
格式化的读写(主要⽤于⽂本⽂件):使⽤ fscanf() 函数和 fprintf() 函数。
字符读写:
1. fputc()函数
fputc(c,fp);  //⽤于将⼀个字符写⼊⽂件
其中,fp为⽂件指针变量;c为要写⼊的字符,可以是字符常量或字符型变量。函数返回值:如果执⾏成功,返回写⼊的字符;否则,返回EOF。
int main()
{
FILE *fp;          //定义⽂件指针
char ch;            //字符指针
fp=fopen("C://Users//Administrator//Desktop//tcc//trans//in.txt","w"); //打开⽂件,写⼊模式
if(fp==NULL)        //若fopen()函数返回NULL则打开⽂件失败
{
printf("⽂件打开失败\n");
}
else
{
printf("请输⼊内容(以回车结束):\n");
while((ch = getchar()) != '\n')  //读取字符进⾏写⼊,读取到“\n”结束
{
fputc(ch,fp);
}
}
fclose(fp);  //关闭⽂件
return 0;
}
由于没有写循环,⽬前只能输⼊⼀⾏⽂本内容。
2. fgetc()函数
c=fgetc(fp);    //⽤来从指定的⽂本⽂件中读取⼀个字符。
其中,fp为⽂件指针,c为要写⼊的字符。该函数的功能是从指定的⽂件中读取⼀个字符,并赋值给字符型变量c。
函数返回值:读取成功,返回读取字符;读取错误或遇到结束标志EOF,返回EOF。
{
FILE *fp;          //定义⽂件指针
char ch;            //字符指针
fp=fopen("C://Users//Administrator//Desktop//tcc//trans//in.txt","r"); //打开⽂件,只读模式
if(fp==NULL)        //若fopen()函数返回NULL则打开⽂件失败
{
printf("⽂件打开失败\n");
}
else
{
while((ch=fgetc(fp))!=EOF)    //读取⽂件字符,直到返回fgetc()函数返回EOF
{fgets和fgetc的区别
putchar(ch);            //在显⽰窗⼝输出字符
}
putchar('\n');                //输出回车
}
fclose(fp);
return 0;
}
字符串读写
1. fputs()函数
fputs(s,fp);    //⽤来将⼀个字符串写⼊指定的⽂本⽂件。
其中,fp为⽂件指针,s可以是字符数组名,字符型指针变量或字符串常量。该函数的功能是将字符串s写⼊由fp指向的⽂件中,字符串末尾的‘\0’字符不允写⼊。
函数返回值:执⾏成功,返回所写的最后⼀个字符;否则,返回EOF。
int main()
{
FILE *fp;          //定义⽂件指针
char s[][100]={"a ⼀","b 地","c 现","cd 三","about 关于"};            //将字符串存⼊数组
int i;
fp=fopen("C://Users//Administrator//Desktop//tcc//trans//in.txt","w"); //打开⽂件,写⼊模式
if(fp==NULL)        //若fopen()函数返回NULL则打开⽂件失败
{
printf("⽂件打开失败\n");
}
else
{
for(i=0;i<5;i++)        //注意数组从0开始
{
fputs(s[i],fp);      //在⽂件中写⼊数组中的字符串
fputs("\n",fp);      //在⽂件中写⼊回车
}
}
fclose(fp);  //关闭⽂件
return 0;
}
2. fgets()函数
fgets(s,n,fp);    //⽤于从指定的⽂件中读⼀个字符串到字符数组中。
其中,s可以是字符型数组名或字符串指针;n是指定读⼊的字符个数;fp为⽂件指针。n是⼀个正整数,表⽰从⽂件中最多读取n-1个字符,并将字符串指针s定位在读⼊的字符串⾸地址。
fgets()函数从⽂件中读取字符直到遇到回车符或EOF为⽌,函数会在最后⼀个字符后加上字符串结束标志’\0’;若有EOF,则不予保留。
函数返回值:该函数如果执⾏成功,返回读取字符串;如果失败,则返回空指针NULL,这时,s中的内容不确定。
int main()
{
FILE *fp;          //定义⽂件指针
char s[5][100];
int i;
fp=fopen("C://Users//Administrator//Desktop//tcc//trans//in.txt","r"); //打开⽂件,只读模式
if(fp==NULL)        //若fopen()函数返回NULL则打开⽂件失败
{
printf("⽂件打开失败\n");
}
else
{
for(i=0;i<5;i++)
{
fgets(s[i],100,fp);    //读取字符串存⼊数组
printf("%s",s[i]);    //输出字符串
}
}
fclose(fp);
return 0;
}
运⾏结果:
格式化读写
1. fprintf()函数
fprintf(fp,format, arg1, arg2,….,argn);
fprintf()⽤来将输出项按指定的格式写⼊指定的⽂本⽂件中,其中格式化规定与printf()函数功能相似,所不同的只是fprintf()函数是将输出的内容写⼊⽂件中,⽽printf()函数则是在屏幕输出。
其中,fp为⽂件指针,format为指定的格式控制字符串;arg1~argn为输出项,可以是字符、 字符串或各种类型的数值。该函数的功能是按格式控制字符串format给定的格式,将输出项arg1,arg2,……,argn的值写⼊fp所指向的⽂件中。
函数返回值:如果函数执⾏成功,返回实际写⼊⽂件的字符个数;若出现错误,返回负数。
具体格式:
fprintf(fp,"%s",s[i]);      //在⽂件中写⼊数组中的字符串
2. fscanf()函数
fscanf(fp,format,arg1,arg2,…..,argn);
fscanf()⽤来按规定的格式从指定的⽂本⽂件中读取数据。它与scanf()函数的功能相似,都是按规定的格式读数据的函数,只是fscanf()函数读的对象不是键盘区,⽽是⽂件。
其中,fp为⽂件指针,format为指定的格式控制字符串;arg1~argn为输⼊项的地址。该函数的功能是从⽂件指针fp所指的⽂本⽂件中读取数据,按格式控制字符串format给定的格式赋予输⼊项arg1,arg2,……,argn中。
函数返回值:如果该函数执⾏成功,返回读取项⽬个数;如果遇到⽂件末尾,返回EOF;如果赋值失败,返回0.
具体格式:
fscanf(fp,"%s",s[i]);    //读取字符串存⼊数组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。