int fgetc( FILE * fp );
fgetc(fp)
int fputc( int c, FILE *fp );
fputc(c,fp)
从一个磁盘文本文件顺序读入字符并在屏幕上显示出来。
#include <stdio.h>
#include <string.h>
void main() {
char c;
FILE* fp = NULL;
fopen_s(&fp, "a.txt", "r");
c = fgetc(fp);
while (c != EOF) {
putchar(c);
c = fgetc(fp);
}
fclose(fp);
}
feof(fp)
从一个磁盘二进制文件顺序读入字符并在屏幕上显示出来。
#include <stdio.h>
#include <string.h>
void main() {
char c;
FILE* fp = NULL;
fopen_s(&fp, "a", "r");
c = fgetc(fp);
while (!feof(fp)) {
putchar(c);
c = fgetc(fp);
}
fclose(fp);
}
从键盘输入一些字符,逐个把它们送到磁盘上去直到用户输入一个“#”为止。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
void main() {
char c,filename[10];
FILE *fp = NULL;
printf("请输入所用的文件名:");
scanf("%s", filename);
if ((fp = fopen(filename, "w")) == NULL) {
printf("无法打开此文件\n");
exit(0);
}
c = getchar(); // 接收执行scanf时最后输入的回车符
// 如果注释掉,文件中会首先换行,然后再输入的字符串
printf("请输入一个字符串(以#结束)");
c = getchar(); // 第一个输入的字符被赋给变量c
while (c!='#') {
fputc(c, fp);
putchar(c); // 字符被输出到显示器
c = getchar();
}
putchar(10); // 向屏幕输出一个换行符
fclose(fp);
}
将一个磁盘文件中的信息复制到另一个磁盘文件中。今要求建立的a.txt文件中的内容复制到另一个磁盘文件b.txt中。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
void main() {
char c=NULL,infile[10],outfile[10];
FILE *in = NULL;
FILE *out = NULL;
printf("请输入读取的文件名:");
scanf("%s", infile);
printf("请输入输出的文件名:");
scanf("%s", outfile);
if ((in = fopen(infile, "r")) == NULL) {
printf("无法打开此文件\n");
exit(0);
}
if ((out = fopen(outfile, "w")) == NULL) {
printf("无法打开此文件\n");
exit(0);
}
while (c!=EOF) {
c= fgetc(in);
fputc(c, out);
putchar(c); // 字符被输出到显示器
}
putchar(10); // 向屏幕输出一个换行符
fclose(in);
fclose(out);
}
char *fgets( char *buf, int n, FILE *fp );
char *fgets( str, n, fp );
int fputs( const char *s, FILE *fp );
int fputs( str, fp );
fgets(str,n,fp);
中 n 是要求得到的字符个数,但实际上只读 n-1 个字符,然后在最后加一个**\0
**字符,
这样得到的字符串共有n个字符,把它们放到字符数组str中。\n
或文件的末尾 EOF
,
则读入结束,则只会返回读取到的字符,包括换行符。\0
不输出。从键盘读入若千个字符串,然后把字符串送到磁盘文件中保存。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
void main() {
char str[3][10];
int i;
FILE *fp = NULL;
printf("请输入要写入的字符串:\n");
for (i = 0; i < 3; i++) {
gets(str[i]);
}
if ((fp = fopen("a.txt", "w")) == NULL) {
printf("无法打开此文件\n");
exit(0);
}
for (i = 0; i < 3; i++) {
fputs(str[i], fp);
fputs("\n", fp);
printf("写入成功:");
printf("%s\n", str[i]);
}
fclose(fp);
}
读取文件中的字符串,打印到控制台
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
void main() {
char str[3][10];
int i;
FILE *fp = NULL;
if ((fp = fopen("a.txt", "r")) == NULL) {
printf("无法打开此文件\n");
exit(0);
}
for (i = 0; i < 3; i++) {
fgets(str[i],10,fp);
printf("%s", str[i]);
}
fclose(fp);
}
fprintf(文件指针, 格式字符串, 输出表列);
fprintf(fp,"%d,%f",i,f);
fscanf(文件指针, 格式字符串, 输入表列);
fscanf(fp,"%d,%f",&i,&f);
size_t fread(void *buffer, size_t size, size_t count, FILE *a_file);
size_t fwrite(const void *buffer, size_t size, size_t count, FILE *a_file);
从键盘输入5个学生的有关数据,然后把它们转存到磁盘文件上去,读取并打印到控制台。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
#define SIZE 5
struct Student {
int num;
char name[10];
int age;
char addr[15];
}stu[SIZE];
void main() {
void save();
void reads();
int i;
printf("请输入学生数据:\n");
for (i = 0; i < SIZE; i++) {
scanf("%d %s %d %s", &stu[i].num, stu[i].name, &stu[i].age, stu[i].addr);
}
save();
printf("学生信息:\n");
reads();
}
void save() {
int i;
FILE *fp = NULL;
if ((fp = fopen("stu.dat", "wb")) == NULL) {
printf("无法打开此文件\n");
return;
}
for (i = 0; i < SIZE; i++) {
if (fwrite(&stu[i], sizeof(struct Student), 1, fp) != 1) {
printf("写入文件错误\n");
}
}
fclose(fp);
}
void reads() {
int i;
FILE *fp = NULL;
if ((fp = fopen("stu.dat", "rb")) == NULL) {
printf("无法打开此文件\n");
return;
}
for (i = 0; i < SIZE; i++) {
fread(&stu[i], sizeof(struct Student), 1, fp);
printf("%4d %-10s %4d %-15s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].addr);
}
fclose(fp);
}
从已有的二进制文件“stu2.dat”中,读入数据并输出到“stu.dat”文件中
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
#define SIZE 7
struct Student {
int num;
char name[10];
int age;
char addr[15];
}stu[SIZE];
void main() {
void load();
void save();
void reads();
load();
save();
printf("学生信息:\n");
reads();
}
void save() {
int i;
FILE *fp = NULL;
if ((fp = fopen("stu.dat", "wb")) == NULL) {
printf("无法打开此文件\n");
return;
}
for (i = 0; i < SIZE; i++) {
if (fwrite(&stu[i], sizeof(struct Student), 1, fp) != 1) {
printf("写入文件错误\n");
}
}
fclose(fp);
}
void reads() {
int i;
FILE *fp = NULL;
if ((fp = fopen("stu.dat", "rb")) == NULL) {
printf("无法打开此文件\n");
return;
}
for (i = 0; i < SIZE; i++) {
fread(&stu[i], sizeof(struct Student), 1, fp);
printf("%4d %-10s %4d %-15s\n", stu[i].num, stu[i].name, stu[i].age, stu[i].addr);
}
fclose(fp);
}
void load() {
int i;
FILE *fp = NULL;
if ((fp = fopen("stu2.dat", "rb")) == NULL) {
printf("无法打开此文件\n");
return;
}
for (i = 0; i < SIZE; i++) {
if (fread(&stu[i], sizeof(struct Student), 1, fp) != 1) {
if (feof(fp)) {
fclose(fp);
return;
}
printf("无法打开此文件\n");
}
}
fclose(fp);
}
putw(10, fp);
i=getw(fp);
void rewind(FILE *fp);
-例如:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
void main(){
FILE *fp1, *fp2;
fp1 = fopen("file1.dat", "r");
fp2 = fopen("file2.dat", "w");
while (!feof(fp1)) {
putchar(getc(fp1));
}
putchar(10);
rewind(fp1);
while (!feof(fp1)) {
putc(getc(fp1), fp2);
}
fclose(fp1);
fclose(fp2);
}
fseek(文件类型指针,位移量,起始点)
fseek(fp,100L,0); // 将位置指针移动到离文件头100个字节处
fseek(fp,50L,1); // 离当前位置50个字节处
fseek(fp,-10L,2); // 从文件末尾处向后退10个字节
i=ftell(fp);
if(i==-1L){printf("error\n");}
在磁盘文件上存有10个学生的数据要求将第1,3,5,7,9个学生数据输入计算机,并在控制台显示出来。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning (disable:4996)
struct Student {
int num;
char name[10];
int age;
}stu[10];
void main() {
FILE *fp;
int i;
if ((fp = fopen("stu.dat", "rb")) == NULL) {
printf("打开文件失败");
exit(0);
}
for (i = 0; i < 10; i+=2) {
fseek(fp, i * sizeof(struct Student), 0);
fread(&stu[i], sizeof(struct Student), 1, fp);
printf("%4d %-10s %4d\n", stu[i].num, stu[i].name, stu[i].age);
}
fclose(fp);
}
ferror(fp);
FILE *fp;
然后通过该指针来操作相应的文件;