文件的顺序读写
文件的顺序读写:
文件的顺序写(输出)操作是指先输出的数据存入文件前面的位置,后输出的数据存放在文件后面的位置。
文件的顺序读(输入)操作是指按数据在文件中存储的前后顺序,从文件开头向文件末尾依次读取。
字符读写函数
字符读写函数
int fgetc(FILE *fp)
fgetc函数:从文件fp中读取一个字符。读取成功,返回值读取到的字符,读取失败时返回值为EOF。
int fputc(char ch, FILE *fp)
fputc函数;向文件fp输出一个字符ch。输出成功,函数返回值是输出的字符ch,输出失败时返回值为EOF。
例1:从键盘输入一批字符,以字符“#”结束。把输入的字符输出到文件file1.txt中。
参考答案:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
FILE *fp;
fp = fopen("file1.txt", "w"); //以w方式打开文件
if(fp == NULL)
{
printf("打开文件失败!\n");
exit();
}
while((ch = getchar()) != '#')
{
fputc(ch, fp); //把字符ch写入文件
}
fclose(fp); //关闭文件
return ;
}
例2:把一个文件复制到另一个文件。
思路分析:基本思路是以读取方式打开源文件,以写入方式打开目标文件,然后逐个从源文件中读取字符并写入到目标文件中
参考答案:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp1, *fp2;
char ch, src[], dest[];
printf("输入源文件名: ");
scanf("%s", src);
printf("输入目标文件名: ");
scanf("%s", dest);
if((fp1 = fopen(src, "r")) == NULL)
{
printf("源文件打开失败!\n");
exit();
}
if((fp2 = fopen(dest, "w")) == NULL)
{
printf("目标文件打开失败!\n");
exit();
}
while((ch = fgetc(fp1)) != EOF)
{
fputc(ch, fp2);
}
fclose(fp1);
fclose(fp2);
printf("文件复制完成!\n");
return ;
}
字符串的读写函数
字符串的读写函数
char * fgets(char *buf, int n, FILE *fp)
从fp中读取长度不超过n-1的字符串,存入buf指向内存。读取成功返回值是buf,失败时返回值NULL。
参数n包括字符串结束标记,没有读完n-1个字符前碰到EOF或换行符自动结束。buf可以是字符数组名和字符型指针。
int fputs(char *s, FILE *fp)
向文件fp输出一个字符串s。如果输出成功,函数返回值是非负整数,输出失败时返回值为EOF。
参数s可以是字符数组名、字符串常量和字符型指针。
例:排序输出文件
参考答案:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char dict[][], temp[];
int i, j, n = ;
FILE *fp;
if((fp=fopen("dict.txt", "r")) == NULL) //读方式打开文件
{
printf("文件打开失败!\n");
exit();
}
while((fgets(dict[n], , fp)) != NULL) //循环从文件中读取字符串
{
n++; //循环结束后n为字符串的个数
}
fclose(fp); //关闭文件
二进制和格式化读写函数
二进制读写函数
int fread(void *p, unsigned size, unsigned n, FILE *fp)
从文件fp中读取长度为size的n个数据项,存放到指针p代表的内存空间中。返回值是读取数据项个数。
int fwrite(void *p, unsigned size, unsigned n, FILE *fp)
把指针p指向的n*size个字节的数据输出到文件fp中。写入成功时返回值为写入数据项个数,失败返回小于n的值。
例:编程把表示多个学生信息的结构体数组写入student.dat文件中。
参考答案:
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int id;
char name[];
double score;
} STUDENT;
int main()
{
STUDENT stu[]={{1001,"Zhang",88.0},{1002,"Lee",75},{1003,"Wang",95}};
int i;
FILE *fp;
if((fp=fopen("student.dat", "wb")) == NULL)
{
printf("文件打开失败!\n");
exit();
}
for(i=; i<; i++)
{
fwrite(&stu[i], sizeof(STUDENT), , fp);
}
fclose(fp);
return ;
}
格式化读写函数
int fscanf(FILE *fp, char *format, args, …)
int fprintf(FILE *fp, char *format, args, …)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有