在c++編程中,可以使用fwrite函數來向文件中寫入數據。這個函數可以寫入任何數據類型的數據,包括字符串、數字、數組、結構體等等。下面我們就從多個方面對c++fwrite函數進行詳細闡述。
一、fwrite函數的基本用法
size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);
該函數用於向文件中寫入數據,可以寫入任何類型的數據。其中,ptr為需要寫入的數據的指針;size為每個數據的字節數;count為要寫入數據的數量;stream為要寫入數據的文件指針。
例如,我們要將一個字符串寫入到文件中:
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("file.txt", "w");
if (fp == NULL) {
printf("fail to open file\n");
return 0;
}
char str[] = "hello world";
int len = strlen(str);
fwrite(str, sizeof(char), len, fp);
fclose(fp);
return 0;
}
上述代碼創建了一個文件指針,打開一個文件並向其中寫入了字符串“hello world”。
二、fwrite函數的返回值及錯誤處理
fwrite函數返回成功寫入的數據項數量,如果返回值少於count,說明發生了錯誤。
通常情況下,fwrite函數的返回值與count相等表示寫入成功,如果小於count,則表示發生了錯誤。我們可以利用ferror函數來判斷是否發生了錯誤,該函數返回非0值表示發生了錯誤。調用clearerr函數可以清除錯誤標誌,以便下一次讀寫操作。
下面是一個演示fwrite函數在寫入數據過程中的錯誤處理的示例:
#include <cstdio>
int main()
{
FILE *fp1, *fp2;
char buf[1024];
int n;
fp1 = fopen("input.txt", "r");
fp2 = fopen("output.txt", "w");
if (fp1 == NULL || fp2 == NULL) {
printf("fail to open file\n");
return -1;
}
while ((n = fread(buf, 1, sizeof(buf), fp1)) > 0) {
if (fwrite(buf, 1, n, fp2) != n) {
printf("write error\n");
}
}
if (ferror(fp1)) {
printf("read error\n");
}
clearerr(fp2);
fclose(fp1);
fclose(fp2);
return 0;
}
上述代碼演示了如何在讀取數據和寫入數據時進行錯誤處理,同時清除錯誤標誌並關閉文件。
三、fwrite函數的高級應用
1.向文件中寫入結構體數據
通過fwrite函數,我們可以將任何類型的數據寫入文件。我們也可以將結構體寫入到文件中,只需要將結構體指針作為數據源傳遞給fwrite函數即可。
#include <stdio.h>
#include <string.h>
struct Student {
char name[20];
int age;
float score;
};
int main()
{
FILE *fp;
fp = fopen("data.txt", "wb");
if (fp == NULL) {
printf("fail to open file\n");
return -1;
}
Student s = {"Tom", 18, 95.5};
fwrite(&s, sizeof(Student), 1, fp);
fclose(fp);
return 0;
}
上述代碼演示了如何將一個學生結構體寫入文件中。
2.向文件中寫入多維數組
如果需要向文件中寫入多維數組,我們需要將其轉換成一維數組,並且寫入文件的時候,需要按照行優先或者列優先的順序來寫入數據。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
fp = fopen("data.txt", "wb");
if (fp == NULL) {
printf("fail to open file\n");
return -1;
}
int a[2][3] = {{1,2,3}, {4,5,6}};
int b[6];
memcpy(b, a, sizeof(a)); // 將二維數組轉換成一維數組
fwrite(b, sizeof(int), 6, fp); // 寫入一維數組
fclose(fp);
return 0;
}
上述代碼演示了如何將一個二維數組寫入文件中。
3.向文件中寫入二進制數據
如果需要向文件中寫入二進制數據,我們可以打開二進制文件,並且需要使用fwrite函數來寫入數據。
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("data.bin", "wb");
if (fp == NULL) {
printf("fail to open file\n");
return -1;
}
char buf[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f};
fwrite(buf, sizeof(char), sizeof(buf), fp);
fclose(fp);
return 0;
}
上述代碼演示了如何向文件中寫入二進制數據,也就是十六進制字符串“Hello”。
原創文章,作者:VQJII,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372880.html
微信掃一掃
支付寶掃一掃