-1

extern txt ファイルからいくつかのパラメーターを取得する C++ で記述されたアプリがあります。このファイルには 1 行に 1 つの変数があり、次のようなさまざまな種類があります。

0
0.8
C:\Documents\Textfile.txt
9

私はこのようなことを試しました(今コードを持っていないので正確ではありません)

    FILE* f;
char line[300];
f = fopen("parameters.txt", "r");

    scanf(line, val1);
    scanf(line, val2);
    scanf(line, val3);
    fclose(f);

しかし、それは機能しません。また、fgets と fgetc をいくつか変更して試してみましたが、機能しませんでした。助けやアイデアはありますか?変数は常に同じ数であり、各場所で同じ型を持っています (そのため、while やループは必要ないと思います)。私を夢中にさせているこの初心者の問題であなたの助けをありがとう.

編集: 実際、これは別のソリューションで見た正確なコードでした

sscanf(line, "%99[^\n]", tp);
sscanf(line, "%99[^\n]", mcl);
sscanf(line, "%99[^\n]", pmt);
sscanf(line, "%99[^\n]", amx);

動作しませんでした。コンパイルしましたが、プログラムがクラッシュしたため、scanf に変更しましたが、クラッシュしませんでしたが、変数は空でした。

4

2 に答える 2

0

(C だけでなく) C++ を使用しているため、C stdio の代わりに標準の iostreams ライブラリを使用することをお勧めします。特に std::ifstream は、フォーマットされたデータをファイルから読み取るのに適しています。

#include <fstream>
#include <string>

// ...

std::ifstream f("parameters.txt");

int val1;
f >> val1;

double val2;
f >> val2;

std::string val3;
std::getline(f, val3);

// etc

アプリケーションによっては、エラー チェックも必要になる場合があります。iostream の詳細については、http: //www.cplusplus.com/reference/iolibrary/を参照してください。

于 2013-08-23T16:14:01.590 に答える
0

scanfからの入力を読み取るためのものstdinであり、 とは関係ありませんFILE

テキスト ファイルを 1 行ずつ読みたい場合は、お勧めしませんFILE。これはより複雑で、バイナリ読み取りにより適しています。代わりにifstream、非常に単純な例を示します。

#include <iostream>
#include <fstream>

using namespace std;

int main(void) {
    ifstream stream("parameters.txt");
    string line;

    /* While there is still a line. */
    while(getline(stream, line)) {
        // variable 'line' is now filled with everyone on the current line,
        // do with it whatever you want.
    }

    stream.close();
}
于 2013-08-23T16:14:29.137 に答える