2014-01-14 20 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 = line1 в файле test.txt Как мне прочитать определенную строку из файла?

+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 ++' not 'count ++'). Аналогично, индекс массива должен быть прочно привязан к тому, что он подписывает ('char line [256];', а не 'char line [256];'. В общем, я не предпочитаю пробелов в индексе, но это больше –

+1

Взятый во внимание. Я делаю это, чтобы оно выглядело как count +1. Я понимаю, что это похоже на знаменитую в то время (x -> 0) шутку. –

Смежные вопросы