0

新しいインターンとして、私はこれらの人々の何人かが書いた多くの汚いコードを修正する必要があります。ここにスニペットがあり、正確な問題が何であるかを理解するのに少し問題があります:

for (i=0; i<TOOL_LIMIT; i++)
        {
                if ( 0 >= fscanf(fp,"%s %s %s %s %s %s %s\n",coreData[i][0],\
coreData[i][1],coreData[i][2],coreData[i][3],coreData[i][4],coreData[i][5], coreData[i][6]))
                {
                        break;
                }
                totalCases++;
        }
        fclose(fp);

基本的に、fp は、次の正規表現パターンを持つファイルに対して開かれます。

data11 data12 data13 data14...data17
data21 data22 data23 data24...data27
...

このコードも意図したとおりに機能していないように感じます。基本的に、ファイルの各行を読み取り、示されているように配列 coreData に入力することを想定しています。ここに示されているように fscanf が機能するとは思いませんが、間違っている可能性があります。このコードは正常に機能していますか? しばらく c でファイル io を実行していません。

編集;; 申し訳ありませんが、失敗の概要を簡単に説明する必要があります。基本的に、C スクリプトは、いくつかの入力 (エラーのあるファイル) を受け取り、それらのファイルを fp によって開かれたファイル (「fp_file」と呼びます) 内のデータと照合し、html テーブルを生成する cgi スクリプトです。エラーのあるファイルが fp_file に表示される場合は、いくつかの追加情報 (data12 など) が出力されます。それ以外の場合は、そのテーブルのエントリが空白のままになります。例 ファイル f01 にエラーがあることが判明しました。fp で 'f01' をチェックします。存在する場合は、そのファイルに関する詳細情報 (作成者など) を表示します。

私が見ているのは、1 つのファイルだけが正しく一致していることです (fp の最初の行)。それ以外は、残りのエラー ファイル用に空白のスペースがあります。

4

1 に答える 1

1

このコードは、空白で区切られた 6 つの単語のグループを読み取り、それらを coreData 配列に格納します。

入力行に空白で区切られた 6 つの単語がある限り、機能すると思います。条件を少し強化し、fscanf が 6 以外の値を返すとすぐにループから抜けることができます (fscanf は正常に読み取られた要素の数を返します)。

于 2012-06-12T20:40:00.883 に答える