И это всё МОЁ
Код:
#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/mman.h>
#include <unistd.h>
#include <sys/stat.h>
size_t file_size(int fd) {
struct stat stat;
fstat(fd, &stat);
return stat.st_size;
}
const uint8_t is_space[256] = {[' '] = 1, ['\n'] = 1, ['\t'] = 1, ['\v'] = 1, ['\r'] = 1, ['\f'] = 1};
int main() {
size_t size = file_size(STDIN_FILENO);
const uint8_t * data = mmap(NULL, size + 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_POPULATE, STDIN_FILENO, 0);
typeof(data) it = data, end = data + size;
size_t linect = 0, wordct = 0;
while(it < end) {
wordct += (!!is_space[*it] & !is_space[*(it + 1)]);
linect += *it++ == '\n';
}
fprintf(stderr, "%lu, %lu, %lu\n", linect, wordct, size);
}
Срочно требуются объяснения от 80 строк на Haskell уделывают в скорости работы сишную портянку