fprintf函数
fprintf是C中的一个格式化库函数,位于头文件中,其作用是格式化输出到一个流文件中;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]…),fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。针对于文件。
fscanf函数 ?
fscanf()函数:
功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。
用 法:int fscanf(FILE *stream, char *format,[argument...]);
int fscanf(文件指针,格式字符串,输入列表); ?
rewind函数
函数名: rewind() 功 能: 将文件内部的位置 指针重新指向一个流( 数据流/文件)的开头 注意:不是 文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。 用 法: void rewind(FILE *stream); 头文件: ?stdio.h
返回值:无
ftell函数
在c语言中,ftell函数用来返回当前文件指针的位置。定义在stdio.h头文件中。
函数原型:long ftell(FILE *fp) 返回当前文件指针位置。这个位置是当前文件指针相对于文件开头的位移量。
返回值:返回文件指针的位置,若出错则返回-1L
fseek函数
FILE 文件结构中 , 存在一个指针 , 每次调用文件的读写函数 , 该指针就会移动 ;
如 fgets / fputs , getc / putc , fscanf / fprintf , fread / fwrite 等函数 ;
默认情况下 , 指针是从前向后移动的 ;
该文件内部的指针指向的位置可以通过 fseek 函数进行改变 ;
fseek 函数原型如下 : 重新设置文件内部指针的位置 ;
#include <stdio.h> int fseek(FILE *stream, long offset, int fromwhere); 1 2 设置的指针的位置是 起始位置 + 偏移量 ;
其中的 int fromwhere 参数就是 起始位置 , 有以下三种选择 :
文件头 SEEK_SET 0 当前位置 SEEK_CUR 1 文件尾 SEEK_END 2 long offset 偏移量参数 , 可以为正数 , 也可以为负数 ;
如果执行成功 , 则返回 0 , 失败返回非 0 , 并设置 error 错误代码? ?
typedef struct stu
{
int id;
char name[20];
float score;
char sex;
}MSG;
int main()
{
MSG msg[4] = {{1001,"lilei",98,'m'},{1002,"lucy",88,'f'},{1003,"jim",78,'m'},{1004,"john",68,'m'}};
FILE *fp = fopen("./1.txt","r+");
if(fp == NULL)
{
printf("failed\n");
}
int i;
for(i = 0 ; i < 4 ; i++)
{
fprintf(fp,"%d %s %f %c\n ",msg[i].id,msg[i].name,msg[i].score,msg[i].sex);
}
rewind(fp);
MSG r_msg[4];
for(i = 0 ; i < 4 ; i++)
{
fscanf(fp,"%d%s%f%c\n ",&r_msg[i].id,r_msg[i].name,&r_msg[i].score,r_msg[i].sex);
}
for(i = 0 ; i < 4 ; i++)
{
printf(fp,"%d %s %f %c\n ",r_msg[i].id,r_msg[i].name,r_msg[i].score,r_msg[i].sex);
}
long ret = ftell(fp);
printf("%ld\n",ret);
fseek(fp,5,SEEK_SET);
fputs("lisi",fp);
fseek(fp,-4,SEEK_CUR);
fputs("lilei",fp);
return 0;
}
重定向
FILE *freopen(要打开的文件名,打开模式(加引号),文件指针标准流、stdin /?stdout)
freopen("CON","w",stdout);? 关闭输入/输出流。
int main()
{
FILE *fp = freopen("stdout.txt","w",stdout);
if(fp == NULL)
{
printf("freopen failed\n");
}
puts("pride is the devil");
puts("no role model");
// fclose(stdout);
puts("my life");
puts("Amari");
freopen("CON","w",stdout);
puts("middle child");
puts("a lot");
fclose(fp);
return 0;
}
|