Как пропустить первую строку при fscanning.txt файле?

Я использую C, и мои знания очень просты. Я хочу отсканировать файл и получить содержимое после первой или второй строки...

Я пробовал:

fscanf(pointer,"\n",&(*struct).test[i][j]);

Но этот синтаксис просто начинается с первой строки =\

Как это возможно?

Спасибо.

Ответ 1

fgets получит одну строку и задает указатель файла, начиная со следующей строки. Затем вы можете начать читать то, что хотите после этой первой строки.

char buffer[100];
fgets(buffer, 100, pointer);

Он работает до тех пор, пока ваша первая строка имеет длину менее 100 символов. В противном случае вы должны проверить и выполнить цикл.

Ответ 2

Мне удалось пропустить строки с помощью scanf со следующей инструкцией:

fscanf(config_file, "%*[^\n]\n", NULL);

строка формата представляет строку, содержащую любой символ, включая пробелы. * В строке формата и указателе NULL означает, что мы не заинтересованы в сохранении строки, а просто в увеличении позиции файла.

Объяснение строки строки:
% - это символ, с которого начинается каждая строка формата scanf; * указывает на то, что он не помещает найденный шаблон в любом месте (обычно вы сохраняете шаблон, найденный в параметрах после строки формата, в этом случае параметр равен NULL); [^\n] означает любой символ, кроме символа новой строки; \n означает newline;

поэтому [^\n]\n означает полную текстовую строку, заканчивающуюся символом новой строки.

Ссылка здесь.

Ответ 3

Не понятно, что вы пытаетесь сохранить ваши данные, поэтому вам нелегко угадать ответ, кстати, вы можете просто пропустить байты, пока не перейдете к \n:

FILE *in = fopen("file.txt","rb");

Затем вы можете пропустить целую строку с помощью fgets, но это небезопасно (потому что вам нужно будет оценить длину строки априори), в противном случае используйте fgetc:

uchar8 c;
do
  c = fgetc(in);
while (c != '\n')

Наконец, у вас должны быть спецификаторы форматирования внутри вашего fscanf для фактического анализа данных, например

fscanf(in, "%f", floatVariable);

вы можете сослаться на здесь для спецификаторов.

Ответ 4

fgets будет работать здесь.

#define MAX_LINE_LENGTH 80

char buf[MAX_LINE_LENGTH];

/* skip the first line (pFile is the pointer to your file handle): */
fgets(buf, MAX_LINE_LENGTH, pFile);

/* now you can read the rest of your formatted lines */