函數fgets和fputs、fread和fwrite用法小結(轉)


字符串讀寫函數fgets和fputs:

1、fgets()函數:
原型char *fgets(char *s, int n, FILE *stream);
從流中讀取n-1(n默認1024)個字符之前,如遇到了換行符或EOF,則讀出結束。參數s是來接收字符串,如果成功則返回s的指針,否則返回NULL。
Linux C下也可以從屏幕輸入字符串,例:fputs(fgets(s,n,stdin),stdout); 
2、fputs()函數:
原型int fputs(char *string, FILE *stream);
送一個字符串到一個流中。

 

fopen()打開文件,fclose()關閉文件。

數據塊讀寫函數fread和fwrite:

C語言還提供了用於整塊數據的讀寫函數。 可用來讀寫一組數據,如一個數組元素,一個結構變量的值等。讀數據塊函數調用的一般形式為: fread(buffer,size,count,fp); 寫數據塊函數調用的一般形式為: fwrite(buffer,size,count,fp); 其中buffer是一個指針,在fread函數中,它表示存放輸入數據的首地址。在fwrite函數中,它表示存放輸出數據的首地址。 size 表示數據塊的字節數。count 表示要讀寫的數據塊塊數。fp 表示文件指針。

例如:
fread(fa,4,5,fp); 其意義是從fp所指的文件中,每次讀4個字節(一個實數)送入實數組fa中,連續讀5次,即讀5個實數到fa中。
[例10.6]從鍵盤輸入兩個學生數據,寫入一個文件中, 再讀出這兩個學生的數據顯示在屏幕上。

#include<stdio.h>  
struct stu  
{  
    char name[10];  
    int num;  
    int age;  
    char addr[15];  
}boya[2],boyb[2],*pp,*qq;  
main()  
{  
    FILE *fp;  
    char ch;  
    int i;  
    pp=boya;  
    qq=boyb;  
    if((fp=fopen("stu_list","wb+"))==NULL)  
    {  
        printf("Cannot open file strike any key exit!");  
        getch();  
        exit(1);  
    }  
    printf("\ninput data\n");  
    for(i=0;i<2;i++,pp++)  
        scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);  
    pp=boya;  
    fwrite(pp,sizeof(struct stu),2,fp);  
    rewind(fp);  
    fread(qq,sizeof(struct stu),2,fp);  
    printf("\n\nname\tnumber age addr\n");  
    for(i=0;i<2;i++,qq++)  
        printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);  
    fclose(fp);  
} 

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM