/* In this task, you should get familiar with file I/O operations in C by writing a program that reads the text file sentences.txt and counts both the number of words and the number of characters (excluding line breaks). Tasks: - Open "sentences.txt" using fopen. - if open fails (i.e., fopen returns NULL): - Print the error message "Could not open file\n" - return 1 - User Input: line number that should be analyzed - Line numbers are 1-based (if user enters "1", analyze first line) - Read file (e.g., using fgetc) - analyze correct line - Count words separated by whitespace. - Count characters (excluding line break). - Close file properly after processing. - Print word count and character count according to example output below. - If entered line number is not in range line numbers of file: - print "Could not analyze line\n". Examples: Line number to analyze: 5 Word Count: 4 Character Count: 22 Line number to analyze: 1 Word Count: 12 Character Count: 80 Line number to analyze: 22 Word Count: 14 Character Count: 76 */ #include #include #include int main(void) { printf("Line number to analyze: "); int line_number; scanf("%d", &line_number); if (line_number < 1) { printf("Could not analyze line\n"); return 0; } FILE *file = fopen("sentences.txt", "r"); if (file == NULL) { printf("Could not open file\n"); return 1; } int current_line = 1; int word_count = 0; int char_count = 0; int character = 0; int saw_char = 0; while ((character = fgetc(file)) != EOF) { if(current_line != line_number && character != '\n') continue; if (character == '\n') { if (current_line == line_number) break; current_line++; continue; } if (current_line == line_number) { if (character != '\n') char_count++; //It is rare to meet a Lannister who shares my enthusiasm for dead Lannisters. if (isspace(character)) { saw_char = 0; } else if (isgraph(character) && !saw_char) { word_count++; saw_char = 1; continue; } } } if (current_line < line_number) { printf("Could not analyze line\n"); } else { printf("Word Count: %d\n", word_count); printf("Character Count: %d\n", char_count); } fclose(file); return 0; }