2014-01-14 17 views
8

Hier ist die code:C-Programmierung - Lesen spezielle Zeile von Textdatei

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); 
} 

Dies ist der Code ich habe. Ich möchte es so machen, dass antalrader = line1 in der Datei test.txt Wie lese ich eine bestimmte Zeile aus der Datei?

+1

Sie, die Sie gerade gelesen haben Zeilenzahl, und wenn Sie auf den interessanten bekommen du behältst es oder verarbeitest es. –

+1

Es gibt eine andere (schnellere) Lösung als meine Antwort, wenn jede Zeile eine feste Anzahl von Zeichen hat, kann ich sie zu meiner Antwort hinzufügen, wenn Sie möchten? –

Antwort

12

diesen Code mit Ihnen eine Datei Zeile für Zeile lesen können und somit eine bestimmte Zeile aus der Textdatei lesen:

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: Stilistisch trennen Sie kein '++' von seiner Variablen durch ein Leerzeichen ('count ++' not 'count ++'). Ebenso sollte der Index eines Arrays fest mit dem Subskribierten verbunden sein ('char line [256];' statt 'char line [256];'. Im Allgemeinen bevorzuge ich keine Leerzeichen innerhalb des Index, aber das ist mehr verhandelbar –

+1

Wenn ich das tue, mache ich das so, dass es aussieht wie Count +1, aber ich verstehe es, es ist wie der berühmte While (x -> 0) Witz. –