文件
文件复位
将文件指针复位的2种方法
第一种
rewind(fp);
第二种
fseek(fp,0L,SEEK_SET)
起始点 表示符号 数字表示
文件首 SEEK—SET 0
当前位置 SEEK—CUR 1
文件末尾 SEEK—END 2
例如:fseek(fp,100L,0);其意义是把位置
指针移到离文件首100个字节处。fseek函
数一般用于二进制文件。
#include<stdio.h>
int main() {
char ch;
FILE* fp;
fp = fopen("test.cpp", "rt");
puts("\n第1次输出文件:\n");
while ((ch=fgetc(fp))!=EOF) putchar(ch);
//将文件指针复位的2种方法
rewind(fp);
//或者
//fseek(fp,0L,SEEK_SET);
puts("\n第2次输出文件:\n");
while ((ch = fgetc(fp)) != EOF) putchar(ch);
fclose(fp);
return 0;
}
文件拷贝
#include<stdio.h>
int main() {
FILE* fp1 = fopen("test.cpp", "rt");
FILE* fp2 = fopen("test.txt", "wt");
while (!feof(fp1)) {
fputc(fgetc(fp1), fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
//正确的程序如下:fflush函数的使用
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
FILE *fp=fopen("test.txt","r+");
while ((ch=fgetc(fp))!=EOF) {
fseek(fp,-1,1);
fputc(islower(ch)?toupper(ch):tolower(ch),fp);
fflush(fp); //没有这个语句结果是错误的!
}
fclose(fp);
return 0;
}
注意文件读写函数用法
fgetc
fputc
fgets
fputs
数据块读写fwrite fread
格式化读写fscanf fprintf
...