#include #include #include // для isspace() 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++) { FILE *file = fopen(argv[i], "r"); if (file == NULL) { fprintf(stderr, "wcl: ошибка: не удалось открыть файл '%s'\n", argv[i]); continue; // следующий файл } int lines = 0; int words = 0; int bytes = 0; int ch; int in_word = 0; while ((ch = fgetc(file)) != EOF) { bytes++; // подсчет байт if (ch == '\n') { lines++; // подсчет строк } // Проверка на границу слова if (isspace(ch)) { if (in_word) { words++; in_word = 0; } } else { in_word = 1; } } // Если осталась незасчитанная часть слова if (in_word) { words++; } fclose(file); // Вывод: строки, слова, байты, имя файла printf("%d\t%d\t%d\t%s\n", lines, words, bytes, argv[i]); } return 0; }