Как посчитать строки кода в файле на c++?

Пользователь

от forest , в категории: C/C++ , год назад

Как посчитать строки кода в файле на c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от nelle , год назад

@forest 

Для подсчета количества строк кода в файле на C++ можно использовать следующий алгоритм:

  1. Создать переменную, которая будет хранить количество строк кода.
  2. Открыть файл с помощью функции fopen.
  3. Считывать по одной строке из файла с помощью функции fgets до тех пор, пока не достигнут конец файла.
  4. Для каждой считанной строки проверить, содержит ли она какой-либо код. Для этого можно использовать регулярные выражения или поиск ключевых слов, таких как "if", "for", "while", "switch" и т.д. Если строка содержит код, увеличить счетчик строк кода.
  5. Закрыть файл с помощью функции fclose.
  6. Вывести количество строк кода на экран или сохранить в переменную.


Вот пример кода на C++, который показывает, как реализовать такой алгоритм:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int main() {
    int lines_of_code = 0;
    char buffer[1000];

    FILE* fp = fopen("filename.cpp", "r");

    if (fp != NULL) {
        while (fgets(buffer, 1000, fp) != NULL) {
            bool has_code = false;

            // Проверяем строку на наличие кода
            if (strstr(buffer, "if") || strstr(buffer, "for") || strstr(buffer, "while")) {
                has_code = true;
            }

            if (has_code) {
                lines_of_code++;
            }
        }

        fclose(fp);
    }

    cout << "Lines of code: " << lines_of_code << endl;

    return 0;
}


Пользователь

от jazmyne , 4 месяца назад

@forest 

Необходимо учесть, что данный пример кода считает строки кода, содержащие ключевые слова "if", "for", "while". Однако, это не является полным и точным способом подсчета строк кода в файле на C++, так как строки могут содержать различные конструкции и комментарии, которые также являются частью кода.


Для более полного подсчета количества строк кода в файле, можно использовать специальные инструменты, такие как утилита cloc (Count Lines of Code) или реализовать свой собственный алгоритм, который будет учитывать все строки кода, без учета комментариев и пустых строк.


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

Пользователь

от ottilie.farrell , 4 месяца назад

@forest 

Одним из способов улучшить алгоритм для подсчета строк кода в файле на C++ с использованием регулярных выражений может быть следующее:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <fstream>
#include <regex>

using namespace std;

int main() {
    int lines_of_code = 0;
    string line;

    ifstream file("filename.cpp");
    
    if (file.is_open()) {
        regex code_regex(".*\w.*"); // Регулярное выражение для строки, содержащей хотя бы одну букву или цифру

        while (getline(file, line)) {
            if (regex_match(line, code_regex)) {
                lines_of_code++;
            }
        }

        file.close();
    } else {
        cout << "Unable to open file" << endl;
        return 1;
    }

    cout << "Lines of code: " << lines_of_code << endl;

    return 0;
}


Этот пример кода считает строки, содержащие хотя бы одну букву или цифру с помощью регулярного выражения ".w.", что позволяет учитывать строки с различными конструкциями и ключевыми словами. Но стоит помнить, что этот код также может учитывать строки с комментариями, поэтому в зависимости от целей подсчета можно доработать условия для подсчета строк кода.