-1

プログラムに argv[1] に書き込む FILE オブジェクトがあります

tabptr = fopen(argv[1],w+)

そして、同じファイルから読み取る必要がありますが、書き込みではなく argv[1] から読み取ることができる tabptr へのポインターを作成するにはどうすればよいですか? それとも、私はこのプロセスを考えすぎていますか?

tabptr = fopen(argv[1],w+)
//tabptr writes to argv[1]...
//time to declare file to read from the same tabptr wrote to
FILE * tabptrStr = tabptr   //how would i make tabptrStr readable?
tabptrStr = fopen(argv[1],"r") //or am i just overthinking this and this will accomplish my goal?

argv[1] はまさに私を混乱させるものです。私は C++ から来た c が初めてです

4

2 に答える 2

1

あなたは同じで読み書きしますFILE*。これは に指定されたモードfopenであり、ファイルを読み書きできるかどうかを決定します。

したがって、次のいずれかを行うことができます

fread(buf, 17, 1, tabptr);

また

fwrite(buf, 17, 1, tabptr);

tabptrで。

argv[1]通常、プログラムに与えられるパラメータですmain()

int main(int argc, char **argv)
{
...
}

この場合、読み取りと書き込みに使用する必要があるファイルに名前を付けます。

于 2012-12-02T23:35:31.310 に答える
0

argcmain に渡されるコマンドライン引数の数であり、argvそれらの引数へのポインターの配列です (argv[0] はプログラム名です)。あなたの場合、argv[1] は読み取り/書き込み用に開かれたファイルの名前です。

の 2 番目の引数fopenは、ファイルを開くモードを示します。そのため、既にファイルを読み取りと書き込みの両方で開いておりtabptr、同じ目的で使用できます。w+モードで開くと、ファイルの内容が既に存在する場合は破棄されることに注意してください。

于 2012-12-02T23:51:23.517 に答える