我试图想出一种方法将数字从数组复制到二进制文件一次一个数。我可以使用 fwrite 将整个数组复制到二进制文件中,但我想知道是否有一种方法可以这样做一次一个数字
在 CopyArrayToBinary 功能中,如何修改 fwrite ,以便能够一次打印一个数字到二进制文件。
我的程序能够编译没有问题,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void CopyArrayToBinary(int a[]);
void AppendNumbers(int a[]);
void DisplayBinFile(char fname[]);
int main()
{
int a[6]={30,60,10,90,40,70};
CopyArrayToBinary(a);
AppendNumbers(a);
DisplayBinFile("binary.txt");
printf("\n\n");
system("PAUSE");
return 0;
}
void CopyArrayToBinary(int a[])
{
FILE * fbin;
fbin = fopen("binary.txt","w");
int i;
fwrite((char *)a, sizeof(int), 6 , fbin);
free(a);
fclose(fbin);
return 0;
}
void AppendNumbers(int a[])
{
int c[4]={15,45,35,74};
FILE * fpointer;
fpointer = fopen("binary.txt", "a");
fwrite((char *)c,sizeof(int),4,fpointer);
free(a);
fclose(fpointer);
return 0;
}
void DisplayBinFile(char fname[])
{
FILE * fpointer;
int i ;
int b[10];
fpointer = fopen(fname, "r");
fread((char *)b, sizeof(int),10,fpointer);
//DISPLAY ARRAY B
for(i=0; i<10; i++)
{
printf("%d ",b[i]);
}
fclose(fpointer);
return 0;
}
答案 0 :(得分:0)
fwrite原型是:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
其中nmemb
是您要编写的元素数。
请注意,如果您想每次添加一个字符,则必须使用"w+"
(或更好的"wb+"
)选项打开文件,以便在文件末尾添加字符。
CopyArrayToBinary
函数中的free(a)指令, 您的代码无法正常工作。您无法释放指向堆栈分配数组的指针。使用free
释放堆malloc
变量。