gpt4 book ai didi

c - 如何一次将数组中的数字复制到二进制文件中?

转载 作者:行者123 更新时间:2023-11-30 17:10:08 25 4
gpt4 key购买 nike

我正在尝试找出一种将数字从数组复制到二进制文件一次一个数字的方法。我可以使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com