forked from 131/lab0.1_letscontinue
12
This commit is contained in:
41
README.md
41
README.md
@@ -1,41 +0,0 @@
|
|||||||
## letscontinue
|
|
||||||
|
|
||||||
Копия README.md на сайте `https://timplab.syktsu.ru/131/lab0.1_letscontinue`
|
|
||||||
|
|
||||||
|
|
||||||
### Задачи
|
|
||||||
|
|
||||||
* написать программу `wcl`.
|
|
||||||
|
|
||||||
В качестве аргументов программе `wcl` передаётся один или несколько путей к файлам.
|
|
||||||
На выход печатается количество строк и имя файла (разделённые символом \t).
|
|
||||||
|
|
||||||
Примеры работы:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ ./wcl ./test/wiki_ci
|
|
||||||
3335 ./test/wiki_ci
|
|
||||||
|
|
||||||
$ ./wcl ./test/wiki_ci ./test/nullfile
|
|
||||||
3335 ./test/wiki_ci
|
|
||||||
0 ./test/nullfile
|
|
||||||
```
|
|
||||||
|
|
||||||
* дополнить wcl чтобы она печатала информацию о том, сколько в файле байт и слов.
|
|
||||||
|
|
||||||
* Посмотреть исходники `str.h`, `str.c`, `str_test.c`.
|
|
||||||
`str.h` -- библиотека для работы со строками.
|
|
||||||
Необходимо дописать функции в str.c чтобы все тесты из `str_test.c` завершились успешно.
|
|
||||||
|
|
||||||
## help
|
|
||||||
|
|
||||||
Для работы вам могут пригодится следующие команды и утилиты:
|
|
||||||
|
|
||||||
* malloc(3) -- функции для работы с динамической памятью
|
|
||||||
* free(3) -- функции для работы с динамической памятью
|
|
||||||
* realloc(3) -- функции для работы с динамической памятью
|
|
||||||
* memset(3) -- функция, заполняющая буфер константным значением
|
|
||||||
* memcpy(3) -- функция, копирующая данные между двумя массивами
|
|
||||||
* memmove(3) -- функция, копирующая данные между массивами (входящий и исходящий массивы могут пересекаться)
|
|
||||||
* strlen(3) -- функция, вычисляющая длину строки
|
|
||||||
* strcpy(3) -- функция, копирующая строку в буфер
|
|
||||||
5
wcl.c
5
wcl.c
@@ -3,10 +3,6 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
void process_file(const char *filename, long *lines, long *words, long *bytes) {
|
void process_file(const char *filename, long *lines, long *words, long *bytes) {
|
||||||
FILE *file = fopen(filename, "r");
|
FILE *file = fopen(filename, "r");
|
||||||
if (!file) {
|
|
||||||
perror(filename);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int ch;
|
int ch;
|
||||||
int in_word = 0;
|
int in_word = 0;
|
||||||
while ((ch = fgetc(file)) != EOF) {
|
while ((ch = fgetc(file)) != EOF) {
|
||||||
@@ -23,7 +19,6 @@ void process_file(const char *filename, long *lines, long *words, long *bytes) {
|
|||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
long total_lines = 0, total_words = 0, total_bytes = 0;
|
|
||||||
printf("Name\tLines\tBytes\tWords\n");
|
printf("Name\tLines\tBytes\tWords\n");
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
long lines = 0, words = 0, bytes = 0;
|
long lines = 0, words = 0, bytes = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user