阿摩線上測驗 登入

申論題資訊

試卷:98年 - 098年身心障礙人員4等_資訊處理#33579
科目:程式設計
年份:98年
排序:0

申論題內容

二、請詳述 C 語言程式中 fprintf 與 fwrite 的差別,同時舉例並說明其正確用法。 (25 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
C語言中,fprintf和fwrite都是用於向檔案輸出資料的函式,但它們在用法和目的上有顯著的差異。
fprintf
用途:fprintf是格式化輸出函式,主要用於將格式化的字符串寫入檔案。它類似於printf函式,但fprintf將輸出導向到指定的檔案流中,而不是標準輸出。
函式原型:
c
Copy code
int fprintf(FILE *stream, const char *format, ...);
參數:
stream:指向FILE對象的指針,該對象識別了要寫入的檔案。
format:一個格式字符串,指示後續參數如何被處理和格式化。
...:根據格式字符串,後續可以有多個參數,代表要寫入檔案的資料。
返回值:成功時返回寫入的字符數,失敗時返回負值。
fprintf範例:
c
Copy code
#include <stdio.h>
int main() {
    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        perror("Failed to open file");
        return 1;
    }
    int age = 25;
    fprintf(fp, "Age: %d\n", age);
    fclose(fp);
    return 0;
}
在這個範例中,fprintf用於將帶有年齡資訊的格式化字符串寫入到檔案中。
fwrite
用途:fwrite是一個二進位輸出函式,用於將資料的塊(二進位形式)寫入檔案。它適用於寫入結構化資料或二進位資料,如圖像、聲音檔案等。
函式原型:
c
Copy code
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
參數:
ptr:指向要寫入資料的指針。
size:每個資料項目的大小(以位元組為單位)。
nmemb:要寫入的資料項目的數量。
stream:指向FILE對象的指針,識別了要寫入的檔案。
返回值:成功寫入的資料項目數量,如果有錯誤發生,可能小於nmemb。
fwrite範例:
c
Copy code
#include <stdio.h>
int main() {
    FILE *fp = fopen("example.bin", "wb");
    if (fp == NULL) {
        perror("Failed to open file");
        return 1;
    }
    int numbers[] = {1, 2, 3, 4, 5};
    fwrite(numbers, sizeof(int), 5, fp);
    fclose(fp);
    return 0;
}
在這個範例中,fwrite用於將一個整數陣列以二進位形式寫入到檔案中。
總結
使用fprintf進行格式化文字輸出,適用於需要將資料以可讀的形式寫入檔案的場景。
使用fwrite進行二進位資料的塊輸出,適合於需要將大量的二進位資料或結構化資料快速寫入檔案的場景。