Nano Hash - криптовалюты, майнинг, программирование

Как пропустить строку при сканировании текстового файла?

Я хочу отсканировать файл и пропустить строку текста перед чтением. Я старался:

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

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

09.05.2010

Ответы:


1

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

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

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

09.05.2010

2

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

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

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

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

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

См. здесь.

19.04.2013
  • '\n' - это пробел, это означает, что используется любое количество любых пробелов, а не только одна новая строка. 28.10.2019
  • Следует также отметить, что реализация fscanf считывает всю строку в память, а затем освобождает ее. 30.03.2021

  • 3

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

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

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

    char c;
    do {
      c = fgetc(in);
    } while (c != '\n');
    

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

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

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

    09.05.2010

    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 */
    
    09.05.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..