FILE *fp1, *fp2;
通常我们强制程序从文件读入而不是从键盘获得输入,方法是在命令行中放上文件的名字,并在前面加上字符<:
demo:<in.dat //输入重定向
demo:>out.dat //输出重定向
demo: < in.dat > out.dat
字节表示字符,人民可以检查或编辑文件。
特性:文本文件分为若干行。
文本文件可以包含一个特殊的“文件末尾”标记。
字节不一定表示字符,字节组还可以表示其他类型的数据,比如整数和浮点数。
在无法确定文件是文本形式还是二进制形式时,安全的做法是把文件假定为二进制文件。
FILE *fopen(const char * restrict filename, const char * restrict mode);
fopen函数返回一个文件指针。
fp = fopen("in.dat","r");
当无法打开文件时,fopen函数会返回空指针。
fclose(fp);
int main(int argc, char *argv[]){
}
demo name.dat dates.dat
argc是命令行参数的数量,argv是指向参数字符串的指针数组。argv[0]指向程序的名字,argv[1]指向字符串"name.dat",argv[2]指向字符串"dates.dat".
详情参考C语言main函数的两个参数(int argc和char *argv[ ])
输出函数
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
输入函数
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar(void);
int ungetc(int c,FILE *stream);
输出函数
int fputs(const char *restrict s,FILE *restrict stream);
int puts(const char *s);
输入函数
char *fgets(char * restrict s, int n,FILE *restrict stream);
char *gets(char *s);
int fseek(FILE *stream,long int offset,int whence);
long int ftell(FILE *stream);
void rewind(FILE *stream);
fseek函数改变与第一个参数(文件指针)相关的文件位置。第三个参数说明新位置是根据文件的起始处、当前位置还是文件末尾来计算。
SEEK_SET 文件的起始处
SEEK_CUR 文件的当前位置
SEEK_END 文件的末尾处
第二个参数是(可能为负的)字节计数。
fseek(fp,0L,SEEK_SET); //move to beginning of file
fseek(fp,0L,SEEK_END); //move to end of file
fseek(fp,-10L,SEEK_CUR); //moves back 10 bytes
文件定位函数最适合二进制流。
ftell函数以长整数返回当前文件位置。
rewind函数会把文件的位置设置在起始处。rewind不返回值。