2014-01-14 10 views
8

ここではcodeです:Cプログラミング - テキストファイルから特定の行を読む

int main() 
{ 
    struct vinnaren 
    { 
     char vinnare[20]; 
     int artal; 
    }; 
    struct vinnaren v[10]; 
    int inputrader; 
    int antalrader; //I want antalrader to be equal to the first 
        //line in test.txt(the first line is "5") 
    char file_name[256] = "test.txt"; 
    char buf[512]; 
    FILE *f = fopen(file_name, "r"); 
    if (!f) 
    { 
     exit(0); 
    } 
    while (fgets(buf, sizeof buf, f)) 
    { 

     printf("%s", buf); 
    } 
    fclose(f); 
} 

これは私が持っているコードです。私はそのようにしたいantalrader =ファイルtest.txtのライン1 ファイルから特定の行を読み取るにはどうすればよいですか?あなたが行毎にファイルを読み込むので、テキストファイルから特定の行読むことができます。このコードで

+1

を、あなたは面白いものに到達したとき、あなたはそれを保つか、またはそれを処理します。 –

+1

すべての行に固定量の文字がある場合は、私の回答よりも速い解決策があります。必要に応じて回答を追加できますか? –

答えて

12

:あなたがちょうど読んだ線と、あなたが数える

lineNumber = x; 

static const char filename[] = "file.txt"; 
FILE *file = fopen(filename, "r"); 
int count = 0; 
if (file != NULL) 
{ 
    char line[256]; /* or other suitable maximum line size */ 
    while (fgets(line, sizeof line, file) != NULL) /* read a line */ 
    { 
     if (count == lineNumber) 
     { 
      //use line or in a function return it 
      //in case of a return first close the file with "fclose(file);" 
     } 
     else 
     { 
      count++; 
     } 
    } 
    fclose(file); 
} 
else 
{ 
    //file doesn't exist 
} 
+8

+1:文法上、変数から '++ 'をスペースで区切らないでください(' count ++ 'ではなく' count ++ ')。同様に、配列の添え字は添え字にしっかりと付けるべきです( 'char line [256];ではなくchar line [256];' '一般的に添え字の中に空白はありませんが、 –

+1

これを考慮すると、カウント+1のようになりますが、それは有名なwhile(x - > 0)ジョークのようなものです。 –

関連する問題