关于fprintf()和fscanf()

fprintf、FSCANF的读写男朋友失去嗅迹一点钟终点站,只由于一点钟磁盘包装。;
呼叫方法是:int   fprintf(包装方针,体式字母串,出口平板的 )归还值:归还到实践出口的印数,
手术化为乌有归还EOF
int Fscanf(包装方针),体式字母串,输出平板的 )归还值:归还输出通知的总额,手术化为乌有归还EOF
fprintf(fp, “%d, %”,   i, t)约整数变量 i 实型变量 t 该值以%D和%的体式出口到FP具有重要性的包装。;  若i=3,t=,出口到磁盘的体式是:3,    0对应,从包装读取通知时,则用功:FSCAF(FP), “%d, %f”,   &i, &t)

在运用fprintf与fscanf时,向包装导出通知并从包装读取通知时,防胀器应保持分歧。。如上面的顺序所示,顺序的功用是:用户输出8个约整数通知,归还顺序并将通知写信反映包装。,与顺序从包装中读取通知。,并说明它。
#i恩布塞 <>
main()
{
FILE *fp;
int i,SS〔8〕,新〔8〕
(I=0;I)<8;i++){
SCANF(%D),SS[I]
}
fp=fopen(“”,”w”);
开端 diesplay old data!/n”);
(I=0;I)<8;i++){
%d:%-10d/n,i+1,SS[I]
fprintf(fp,”%d,”,SS[I]  /*出口通知时以逗号为通知中间的隔开符*/
}
FSET(FP)
Primtf(如今) diseplay read date!/n”);
if((fp=fopen(“”,r)=空 return 1;
(I=0;I)<8;i++){
FSCAF(FP),”%d,”,新的[i]);/*当输出通知时,逗号是DA中间的隔开符。,这是分歧的。,                                                                                 读取通知是没逆的。

      %d:%-10d/n,i+1,新[我]
}
FSET(FP)
}

防胀器也可以运用/N。,归还列车,与顺序中间的两个句子呼应地翻转了。:
fprintf(fp,%d/n,SS[I]
FSCAF(FP),%d/n,&新[我] 

运用fprintf和fscanf的优点:

运用Frad和Frad的优点是二元系读取是快动作的的。。但它们是有缺陷的,这是在

读时 while(!FEF(FP) 不精确,民间音乐常常看见它盘旋一次。。由于FEF

它是本顺差印来断定无论完毕的。,包装的完毕识别符是'/0 '是两个单词

节,在读取”/”的时分feof()更为false独自的读取完”/0”的时分feof()==true。

领到过量盘旋(假如运用的话)!FEF(FP)的话)。运用fprintf和fscanf

,由于这两个作用具有输出/出口体式约束。,使平坦在读/ 0时有一点钟冗余盘旋,

除非由于它使不满意输出/出口体式,因而富余的周而复始被盾了。。

最好这么做。:”%d/t%d/t” 每个数字都有限度局限。,因而可以这么做

良好盾。^^

包装的读取和写信反映是最经用的包装手术。。提出杂多的包装的读写功用。:

印读写功用 :fgetc和fputc

字母串读写功用:fgets和fputs

通知块读写功用:fread和fwrite

·体式化读写作用:fscanf和fprinf

跟随每个通知的读取,包装流方针FP举行呼应的改变主意

运用上述的作用需求使具体化头包装。。这些先例都来自某处MSDN。

1 fprintf——Print formatted data to a stream

#i恩布塞 <>
#i恩布塞

FILE *stream;

void main( void )
{
int     i = 10;
double fp = 1.5;
char    s[] = “this is a string”;
char    c = ”/n”;

   stream = fopen( “”, “w” );
fprintf( stream, “%s%c”, s, c );
fprintf( stream, %d/n, i );
fprintf( stream, “%f/n”, fp );
fclose( stream );
system( “type ” );
}

Output

this is a string101.500000
2 fscanf——Read formatted data from a stream
#i恩布塞 <>FILE 区间 main( void ){    long l;    float fp;    char s[81];    char c;    stream = fopen( “”, “w+” );    if( stream == NULL )       printf( “The file was not opened/n” );    else    {       fprintf( stream, “%s %ld %f %c”, “a-string”,                 65000, , ”x” );       /* Set pointer to beginning of file: */       fseek( stream, 0L, SEEK_SET );       /* Read data back from file: */       fscanf( stream, “%s”, s );       fscanf( stream, %LD, &l );       fscanf( stream, “%f”, &fp );       fscanf( stream, “%c”, &c );       /* Output data read: */       printf( %s/n, s );       printf( “%ld/n”, l );       printf( “%f/n”, fp );       printf( %c/n, c );       fclose( stream );    }}Outputa-string650000x3 fread——Reads data from a stream
4 fwrite——Writes data to a stream
读取通知块作用呼唤的普通形状是: 弗雷德(巨物),size,count,FP) 写信反映通知块作用呼唤的普通形状是: 巨物(巨物),size,count,FP) 里面的: buffer 这是一点钟方针,在FRAAD作用中,它代表输出通知的第一点钟地址。。在写作用中,它代表出口通知的第一点钟地址。。 size 表现通知块的八位字节数。。 count 要读取和写信反映的通知块的数量。 fp 包装方针的表现。
5 fgets 看不出FLAAD的分别,除非FRAD越过,还可以处置对立的事物特色包装的通知类型。
6 fputs
7 fgetc fputs
从键盘输出印行,写包装,包装的读数再次显示在银幕上。。 #i 恩布塞 main() { FILE *fp; char ch; if((fp=fopen(“d://jrzh//example//string”,”wt+”))==NULL) { 不克不及 open file strike any key exit!”); getch(); 脱离(1) } 输出 a 字母串:/n ch=getchar(); while (CH)!=”/n”) { fputc(CH),FP) ch=getchar(); } rewind(FP) //Repositions the file pointer to the beginning of a filech=fgetc(FP) while(CH)!EOF) { putchar(CH)); ch=fgetc(FP) } PrimTf(/n) FSET(FP) }

 

no comments

Leave me comment