0

似たような回答の質問を見つけたので、この質問をして申し訳ありませんが、長さがわからない行の読み方を理解するのに苦労していますが、構造は同じです。

各行は次のように構成されています: name:id:buyingPrice:sellingPrice:profit:quantity

名前と ID は文字列ですが、残りは double です。

私の問題は、各フィールドを読み取り、保存する while を設定する方法がわからないことです。これを達成する方法について詳細な説明を得ることができますか?

これが私のファイルの読み取りです(文字列のみ):

file = fopen("fileData.txt", "rt");

if(file != NULL){
    char lineSize[128] = "";

    while(fgets(line, 128, file) != NULL){
        fscanf("%s:%s:%s:%s:%s:%s", string1, string2, string3, string4, string5, string6);

    }
    fclose(file);
4

2 に答える 2

0

私が使用するのは、scanf-format の 'a' 修飾子です。単純に 'fscanf("%as:%as:...", ...)' と言って、未割り当てのポインターのアドレスを渡し、fscanf に malloc させます。それらをあなたのために。

これは gnu 拡張機能として始まりましたが、知る限り、C11 標準に組み込まれています。

于 2013-06-02T16:58:05.530 に答える
0

strtokの後にトークンを解析するために使用することを考えましたfgetsか?

于 2013-06-02T12:29:02.370 に答える