2012-04-21 29 views
1

私は決してファイルにデータを書き込むのに苦労しました!私はMinGWからGCCを実行しています。LinuxでGCCを使用することに慣れていたからです。私は通常、Linuxシステムコールopen()、write()、read()を使用しますが、Windowsプログラムを作成していますが、Windowsでread()/ write()を使用するのに問題がありました。標準ライブラリ。とにかく、私が持っている問題は、ファイルへの書き込み方法がわからないことです! "r + b"、 "wb"、 "w + b"でfopen()を使った "FILE *"変数を定義しましたが、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を返します。私は本当に理解していませんが、私が読んだことから、これは単純にエラーがあることを示していますが、それ以上は何もないことを示しています。あなたのコード内で二度目のだ

答えて

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

あなたはinfileからfopenの結果を割り当てます。おそらくoutfileが欲しかったでしょう。

+0

Ah!ほとんどの場合、犯人!私は(明らかに)2つのセクションをコピーして貼り付け、すべての変数を(ほとんど:P)変更しました!私は私のコンピュータに行くときにそれを試してみましょう! – Sean

+0

(メジャー)遅延についてお詫び申し上げます。私はちょうど今私の質問を通過してしまったと私はこれに決して答えていないことを見た!はい、徹底的な読書が必要なものであることが判明しました。ありがとう、これは答えです。 – Sean

関連する問題