gpt4 book ai didi

c - 使用标准库写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:06 24 4
gpt4 key购买 nike

我从来没有在将数据写入文件时遇到过这么多麻烦!我从 MinGW 运行 GCC,因为我习惯在 Linux 中使用 GCC。我通常使用 Linux 系统调用 open()、write() 和 read(),但我现在正在编写一个 Windows 程序,我在 Windows 中使用 read()/write() 遇到了麻烦,所以我只是使用标准库。无论如何,我遇到的问题是我不知道如何写入文件!我已经定义了“FILE *”变量,使用了 fopen()、“r+b”、“wb”和“w+b”,但我仍然无法使用 fwrite() 或 fprintf() 写入我的输出文件.我什至不知道我做错了什么!这是我的来源:

#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>

#define DEBUG 1

/*** Global functions ***/
double highfreq(double deg);

/*** Global variables ***/
double sin_now;

unsigned int *ptr;
unsigned char *key, *infilename, *outfilename;
FILE *infile, *outfile, *keyfile;

const char *pipe_name="[pipe]";

int main(int argc, char *argv[]) {
unsigned int x, y, z;

if(argc!=3) {
fprintf(stderr, "Syntax error: %s <infile.txt> <outfile.wav>", argv[0]);
return 1;
}
if(argv[1][0]=='-') {
infile=stdin;
infilename=(unsigned char *)pipe_name;
}
else {
infilename=argv[1];
if((infile=fopen(infilename, "rb"))==NULL) {
fprintf(stderr, "Could not open input file for modulation.\n", infile);
return 2;
}
}
if(argv[2][0]=='-') {
outfile=stdout;
outfilename=(unsigned char *)pipe_name;
}
else {
outfilename=argv[2];
if((infile=fopen(outfilename, "wb"))==NULL) {
fprintf(stderr, "Could not open/create output file for modulation.\n", outfile);
return 3;
}
}
if(DEBUG) printf("Input file:\t%s\nOutput file:\t%s\n", infilename, outfilename);

fprintf(outfile, "Why won't this work!?\n");

fclose(infile);
fclose(outfile);
return 0;
}

double highfreq(double deg) {
double conv, rad;

conv=M_PI/180;
rad=deg*conv;
return sin(rad);
}

我最终会制作一个 WAV 文件作为输出,因此使用“highfreq()”函数,但现在我什至无法将其写入文件!如果对任何人有帮助,fprintf() 返回错误值 -1。我不太明白,因为根据我的阅读,这只是表明存在错误,仅此而已。

最佳答案

    outfilename=argv[2];
if((infile=fopen(outfilename, "wb"))==NULL) {

这是您在代码中第二次将 fopen 的结果分配给 infile。你可能想要 outfile 在那里。

关于c - 使用标准库写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263531/

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