如何一次一个地将数组中的数字复制到二进制文件中?
How to copy numbers from an array into a binary file one-at-a-time?
我正在尝试找出一种将数组中的数字复制到二进制文件中的方法一次一个数字。我可以使用 fwrite 将整个数组复制到二进制文件中,但我想知道是否有一种方法可以做到这一点 one-number-一次.
在函数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;
}
fwrite原型为:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
其中nmemb
是你要写入的元素个数。
请注意,如果您想每次添加一个字符,您必须使用 "w+"
(或更好的 "wb+"
)选项打开文件以在文件末尾附加字符。
由于 CopyArrayToBinary
函数中的 free(a) 指令,您的代码无法正常工作。您不能释放指向堆栈分配数组的指针。使用 free
释放堆 malloc
指定变量。
我正在尝试找出一种将数组中的数字复制到二进制文件中的方法一次一个数字。我可以使用 fwrite 将整个数组复制到二进制文件中,但我想知道是否有一种方法可以做到这一点 one-number-一次.
在函数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;
}
fwrite原型为:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
其中nmemb
是你要写入的元素个数。
请注意,如果您想每次添加一个字符,您必须使用 "w+"
(或更好的 "wb+"
)选项打开文件以在文件末尾附加字符。
由于 CopyArrayToBinary
函数中的 free(a) 指令,您的代码无法正常工作。您不能释放指向堆栈分配数组的指针。使用 free
释放堆 malloc
指定变量。