2011-02-10 3 views
0

私はstdinを使用するコードを持っています。コマンドラインからプログラムを実行すると、wavファイル(/Users/username/Desktop/music.wav)の場所が渡されます。コード内のstdinを置換する

コードはCでのみ書かれています。stdin変数は2つの関数全体で実行されます。

コード内の標準入力をファイルのディレクトリと場所の入力に置き換える方法はありますか?

つまり、 '/Users/username/Desktop/music.wav'を2つの異なるC関数にハードコードするにはどうすればよいですか。

+0

あなたは、Linuxを使用していますか? – BlackBear

+0

以前の同様の質問から、彼はMac OS X –

答えて

1

私はあなたがfreopenを探していると思います。

私が正しく理解していれば、あなたはargv[1]からファイル名を読み、(freopenはを呼び出す):

私はもちろんのハード配線を奨励したいという
freopen(argv[1], "r", stdin); 
+1

@Simoneを使用しているようです。本当に?どういうわけか文字列を渡すだけの問題ではありませんか? @ Simone。 –

+0

さらに、これはstdoutのようです。 stdinではうまくいくのだろうか? –

+0

@Ericは更新を参照してください。 @ SYMONE。 – Simone

0

ない....

あなたが望むようにそれが聞こえますファイルの場所を定義するには&複数の場所から参照しますか?

#&のヘッダにパスを定義して複数のファイルに含めることができます。

など。

がheader.h

#define FILE_LOCATION "/Users/username/Desktop/music.wav" 

myProgram.c

#include "header.h" 

void functionA() { 
    fopen(FILE_LOCATION, ...); 

    /* 
    * etc .. 
    */ 
} 

void functionB() { 

    printf("The file is %s\n", FILE_LOCATION); 

    /* 
    * etc .. 
    */ 
} 

myOtherProgram.c

#include "header.h" 

void someOtherFunction() { 
    doSomethingWith(FILE_LOCATION); 
} 

void doSomethingWith(char *fileLoc) { 

} 
関連する問題