#include "header.h" print_result_by_chars(int charCount, char buffer[], int nonAlphaCharCount) { int i; char buffer2[BUFSIZE]; for(i = 0; i < charCount; i++) { buffer2[i] = buffer[i]; if(isalpha(buffer[i]) == 0) { nonAlphaCharCount++; } } /* terminate it */ buffer2[i] = 0x00; printf("num of lines is %d", charCount); printf("Line you entered was %s\n", buffer2); printf("Number of non-alphabetical Characters was %d\n", nonAlphaCharCount); } void sig_term_handler(int sig_num) { fprintf(stderr, "count has been killed\n"); exit(1); } int main(int argc, char *argv[]) { struct args these_args; char ch; char *num_of_lines; char buffer[BUFSIZE]; int charCount = 0; int nonAlphaCharCount = 0; int i; int fd_in; int fd_out; these_args = parse_input(argc, argv); fd_in = these_args.input_fd; fd_out = these_args.output_fd; num_of_lines = these_args.num_of_lines; /* setup a signal in case we are killed */ signal(SIGTERM, sig_term_handler); if(strcmp(num_of_lines, "") != 0) { for(i = 1; i < strlen(num_of_lines); i++) { /* shift everything one character down */ num_of_lines[i-1] = num_of_lines[i]; /* terminate last character with null */ if(i == (strlen(num_of_lines) - 1)) { num_of_lines[i] = 0x00; } } charCount = atoi(num_of_lines); /* illegal argument */ if(charCount <= 0) { fprintf(stderr, "Invalid argument!!\n"); exit(2); } } if(fd_in != 0) { close(INPUT); dup(fd_in); } if(fd_out != 1) { close(OUTPUT); dup(fd_out); } /* read(fd_in, buffer, BUFSIZE); */ scanf("%s", buffer); if(strcmp(num_of_lines, "") == 0) { print_result_by_chars(strlen(buffer), buffer, nonAlphaCharCount); } else { print_result_by_chars(charCount, buffer, nonAlphaCharCount); } }