作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试找出一种将数字从数组复制到二进制文件一次一个数字的方法。我可以使用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;
}
<小时/>
最佳答案
fwrite原型(prototype)是:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
其中 nmemb
是您要写入的元素数量。
请注意,如果您想每次添加一个字符,则必须使用“w+”
(或更好的“wb+”
)选项打开文件来附加字符在文件末尾。
由于 CopyArrayToBinary
函数中的 free(a) 指令,您的代码无法正常工作。您无法释放指向堆栈分配数组的指针。使用free
来释放堆malloc
分配的变量。
关于c - 如何一次将数组中的数字复制到二进制文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33009997/
我是一名优秀的程序员,十分优秀!