Как пропустить первую строку при 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 */