gpt4 book ai didi

c - 关于 C 中的 fwrite() 错误

转载 作者:行者123 更新时间:2023-11-30 14:46:08 27 4
gpt4 key购买 nike

读取文件并将数据乘以2。之后,我写了一个写入另一个文件的程序。该文件是一个 16 位文件。经过这样,只将一定数量写入创建的文件中。我愿意不知道为什么会发生这种情况。请帮助我。

C( Visual Studio 2017)

#define _CRT_SECURE_NO_WARNINGS
#define SIZE 16000
typedef short data_type;

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {

FILE *fd, *fd2;
data_type *data;
int n;

data = (data_type*)malloc(sizeof(data_type) * SIZE);
for (int i = 0; i < SIZE; i++)
data[i] = 0;

if ((fd = fopen("C:\\Users\\SeoHyeon\\Documents\\test16kSam16bMono.pcm", "r")) == NULL)
printf("Error opening file1");
if ((fd2 = fopen("C:\\Users\\SeoHyeon\\Documents\\test16kSam16bMono2.pcm", "w")) == NULL)
printf("Error opening file2");

n = fread(data, sizeof(data_type), SIZE, fd);

for (int i = 0; i < SIZE; i++)
data[i] = data[i] * 2.0;

if (fwrite(data, sizeof(data_type), SIZE, fd2) != SIZE) {
printf("Error writing to file.\n");
exit(1);
}

fclose(fd);
fclose(fd2);

free(data);

return 0;
}

最佳答案

程序可能没有以二进制模式打开这两个文件。

例如:

FILE *fin = fopen("input_file.bin", "rb");  // <-- Note the "rb"

如果您的文件以文本模式(默认)打开,如果数据中存在 EOF 字符,文件输入可能会提前关闭。

编辑:此外,当文件句柄 fdfd2 为 NULL 时,您应该处理错误。还有一些您没有检查的其他错误条件,但我将这些作为练习留给读者。

关于c - 关于 C 中的 fwrite() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52529792/

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