Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <fcntl.h>
- #include <unistd.h>
- void handle_file(char* filename) {
- int sentences = 0;
- int commas = 0;
- int f = open(filename, O_RDONLY);
- char buff[200];
- int read_bytes;
- // Workaround
- char previous_char = '.';
- // A sentence. Another, one...
- while((read_bytes = read(f, buff, 200)) > 0) {
- int i; // read_bytes = 50
- for(i = 0; i < read_bytes; i++) {
- if(buff[i] == '.' && previous_char != '.')
- sentences++;
- else if(buff[i] == ',')
- commas++;
- previous_char = buff[i];
- if(write(STDOUT_FILENO, &buff[i], 1) < 0)
- perror("Write error");
- }
- }
- if(read_bytes != 0)
- perror("Read error");
- close(f);
- printf("\nCommas: %d\nSentences: %d\n", commas, sentences);
- }
- // argc - ARGument Count
- // argv - ARGument Values
- int main(int argc, char** argv) {
- int pids[argc - 1];
- int i;
- for(i = 1; i < argc; i++) {
- pids[i - 1] = fork();
- if(pids[i - 1] < 0)
- {
- perror("Fork error");
- }
- else if(pids[i - 1] == 0)
- {
- handle_file(argv[i]);
- return 0;
- }
- }
- for(i = 1; i < argc; i++)
- wait(NULL);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement