From a3cc459be747375f6e68e42092428f1fd2ae55cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=88=D0=B5=20=D0=98=D0=BC=D1=8F?= Date: Sat, 11 Oct 2025 05:57:28 -0400 Subject: [PATCH] first --- wcl.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 wcl.c diff --git a/wcl.c b/wcl.c new file mode 100644 index 0000000..9a73c1a --- /dev/null +++ b/wcl.c @@ -0,0 +1,45 @@ +#include +#include + +int count_lines(const char *filename) { + FILE *file = fopen(filename, "r"); + if (file == NULL) { + fprintf(stderr, "wcl: ошибка: не удалось открыть файл '%s'\n", filename); + return -1; + } + + int lines = 0; + int ch; + int last_char = '\n'; // Для обработки последней строки + + while ((ch = fgetc(file)) != EOF) { + if (ch == '\n') { + lines++; + } + last_char = ch; + } + + // Если файл не пустой и не заканчивается на новую строку + if (last_char != '\n' && last_char != EOF) { + lines++; + } + + fclose(file); + return lines; +} + +int main(int argc, char *argv[]) { + if (argc < 2) { + fprintf(stderr, "Использование: %s <файл1> [файл2 ...]\n", argv[0]); + return 1; + } + + for (int i = 1; i < argc; i++) { + int lines = count_lines(argv[i]); + if (lines >= 0) { + printf("%d\t%s\n", lines, argv[i]); + } + } + + return 0; +}